2
我想实现深度优先算法来解决迷宫,但我写的代码 似乎没有做任何事情,既不会产生错误,也不会产生预期的结果,女巫是“填充”路径 数组与访问coordenates,因为当我打印路径数组我得到一个空数组。路径寻找迷宫错误
public static boolean searchPath(char[][] maze, int x, int y, List<Integer> path) {
if(maze[y][x]=='E') {
path.add(x);
path.add(y);
return true;
}
if(maze[y][x]=='_') {
int dx = -1;
int dy = 0;
if(x +dx >0 && y + dx > 0 && x + dx < maze.length && y + dx < maze[0].length && searchPath(maze,x+dx,y+dy,path)) {
path.add(x);
path.add(y);
return true;
}
dx = 1;
dy = 0;
if (x +dx >0 && y + dx > 0 && x + dx < maze.length && y + dx < maze[0].length && searchPath(maze, x + dx, y + dy, path)) {
path.add(x);
path.add(y);
return true;
}
dx = 0;
dy = -1;
if (x +dx >0 && y + dx > 0 && x + dx < maze.length && y + dx < maze[0].length && searchPath(maze, x + dx, y + dy, path)) {
path.add(x);
path.add(y);
return true;
}
dx = 0;
dy = 1;
if (x +dx >0 && y + dx > 0 && x + dx < maze.length && y + dx < maze[0].length && searchPath(maze, x + dx, y + dy, path)) {
path.add(x);
path.add(y);
return true;
}
}
return false;
}
}
这里就是我所说的搜索路径。
public MazeReader() {
setTitle("Maze");
setSize(640,480);
setLocationRelativeTo(null);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
DepthFirst.searchPath(Maze, 0, 1, path);
pathIndex = path.size() - 2;
}
这里是塔迷宫与我处理:
_SW_____W
_WWW_W_WW
_____W_EW
我认为这个问题可以这样的事实奠定了previuos数组,其中迷宫 存储没有被正确地导入到DepthFirst类。任何解决问题的办法?
你能解释一下代码的最后两行是什么吗(path.add(y)并返回true)? – Toshiyuki
对不起,他们只是一个复制粘贴错误。我已经删除它们。 – Robert