У меня есть две точки в массиве 10 × 10, и я хочу все пути между этими двумя точками.
кроме того, у меня есть ограничение в моих шагах:
only [(Right затем Up), (Rightзатем Вниз), (Влево, затем Вверх), (Вниз, затем влево)] Движение разрешено.
Какие алгоритмы я могу использовать для этого?
Я пытался с этим кодом, но не дал мне все пути
void finding(int sW, int sH, int dW, int dH, String path,int strategy) {
if(isOuted(sW, sH, dW, dH) || visited[dW][dH])return;
visited[dW][dH] = true;
if(strategy == 1){
RD(sW, sH, dW, dH, path+"RU");
RU(sW, sH, dW, dH, path+"RU");
LU(sW, sH, dW, dH, path+"RU");
DL(sW, sH, dW, dH, path+"RU");
}else if strategy == 2 ...
}
и в моих методах, например, для RU (это означает, что прямо сейчас вверх) у меня есть:
private void RU(int sW, int sH, int dW, int dH, String path){
if(isPath(++sW, sH, dW, dH)){
System.out.println(path+"R");
return;
}
if(isPath(sW, ++sH, dW, dH)){
System.out.println(path+"RU");
return;
}
finding(sW,sH,dW,dH,path,1);
}
это хороший подход?!
Iнужен алгоритм, который более эффективен и надежен.