迷宫算法路径查找器
本文关键字:查找 路径 算法 迷宫 | 更新日期: 2023-09-27 18:25:53
我正在试图找到一个迷宫的路径,下面是代码,它假设进入递归求解循环,但它一直退出,如果第二个条件是我在这里做错了什么,有人能帮我吗?im默认情况下将Washer和correctpath数组设置为false。
recursiveSolve(0, 0);
public static int[,] maze = {{0, 0, 0, 0, 0, 1},
{1, 1, 0, 0, 0, 1},
{0, 0, 0, 1, 0, 0},
{0, 1, 1, 0, 0, 1},
{0, 1, 0, 0, 1, 0},
{0, 1, 0, 0, 0, 1}};
public static Boolean recursiveSolve(int row, int col) {
Boolean[,] wasHere = new Boolean[6, 6];
Boolean[,] correctPath = new Boolean[6, 6]; // The solution to the maze
if (maze[row, col] == 1 || wasHere[row, col]) {
return false;
}
else if (row == 0 || row == 6 - 1 || col == 0 || col ==6 - 1) {
correctPath[row, col] = true;
return true;
}
else {
wasHere[row, col] = true;
if (recursiveSolve(row - 1, col) || recursiveSolve(row + 1, col) ||
recursiveSolve(row, col - 1) ||
recursiveSolve(row, col +1)) {
correctPath[row, col] = true;
return true; // successfully escaped; this square is on path
}
else {
return false;
}
}
}
您的wasHere和correctPath数组是recursiveSolve函数的本地数组,这意味着每次输入该函数时,数组都会初始化为false(或随机值)。
首先,尝试使这些数组也是静态的,看看这是否解决了始终为false的问题。
此外,你应该从迷宫内的某个地方开始搜索,而不是从边缘开始(0,0表示你已经离开了迷宫)。如果你想从0,0开始,请将其标记为起点,不要将其作为有效的解决方案。
如果您实际上正在进行路径查找,而这不是一项需要此特定解决方案的练习,那么您可能还想研究A*算法,它可能更高效、更稳健。
维基百科