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