问题描述
编辑:仅当迷宫边界上没有空墙的空白处时,才能找到迷宫出口。
Edit2:收到帮助后,我对代码进行了一些更改,但是仍然遇到相同的问题。 可能是我没有使用正确提及的内容。 我已将代码段更改为仅一个递归(上移部分),以最大程度地减少查看代码段时不必要的重复。
(仍然是编码的新事物,所以希望您不要介意) 我正在尝试为一个程序编写代码,该程序可以打印一个人在给定迷宫中寻找路径的运动。
但是,我遇到了一个问题,即到达迷宫出口后,该人回到原来的位置。
原始位置由(x,y)坐标给出。
bool find_path(char **maze,long **track,long rows,long cols,long x,long y,long steps)
{
bool found;
if (goal_found(maze,rows,cols,x,y)) {
return true;
}
track[y][x] = 2;
if (maze[y - 1][x] == EMPTY && track[y - 1][x] == 1) { // Move Up
steps++;
found = find_path(maze,track,y - 1,steps);
if (found) {
return true;
}
++steps;
}
}
解决方法
您的程序在迷宫中找到所有路径;如果要停止它,则需要更改调用以在遇到成功时停止遍历迷宫:
found = search_maze(maze,track,rows,cols,x,y + 1,steps);
swap(maze,y,x);
if (found) {
return found;
}
所有递归调用。