我在10×10的阵列中有两个点,我希望这两个点之间的所有路径。
此外,我的步伐受到限制:
仅允许[(从右到上),(从右到下),(从左到上),(从下到左)]移动。
我可以为此使用哪些算法?
我尝试使用此代码,但没有给出所有路径
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);
}
这是一个好方法吗?!
我想要一种更高效,更可靠的算法。