递归地在迷宫中搜索路径

Searche a path within a maze recursively

编辑:迷宫出口只有在沿着迷宫边界没有任何墙壁的空地时才能找到。

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, rows, cols, x, y - 1, steps);
    if (found) {
      return true;
    }
    ++steps;
  }
}

您的程序找到 所有 条迷宫路径;如果你想停止它,你需要改变你的调用以在你成功时停止穿越迷宫:

  found = search_maze(maze, track, rows, cols, x, y + 1, steps);
  swap(maze, y, x, y + 1, x);
  if (found) {
      return found;
  }

在所有的递归调用中。