我對Java相當陌生,正試圖用遞歸來解決迷宮問題。我添加了以下代碼的一部分。我有一個包含「字段」的2D數組。牆是1,開始座標和結束座標。Java遞歸問題迷宮
我有一個問題;
我想擦除路徑的位置,只要它不能繼續&末端還沒有達到。我該怎麼做呢?
- 我曾嘗試添加布爾它
- 在遞歸添加迷宮的端[X] [Y] = '0'(空)
但我不它出來了,也許我做錯了。
PS:我已經在論壇上搜索過,閱讀了很多有關遞歸以及其他人如何解決他們的問題,但我無法弄清楚如何解決這個小小的代碼。
-P代表路徑 - 寬度&高度是從二維數組, -I與起始導航(XSTART,ystart)(開始爲什麼我需要嘗試新的位置時,它發現B(開始)
這就是 navigate(int x, int y) {
if (x < 0 || x > width - 1 || y < 0 || y > height - 1) {
return;
}
if (maze[x][y] == '1') {
return;
}
if (maze[x][y] == 'E') {
maze[x][y] = 'P';
}
if (maze[x][y] == 'P') {
return;
}
if (maze[x][y] == '0') {
maze[x][y] = 'P';
return;
}
if (maze[x][y] == 'B') {
maze[x][y] = 'P';
navigate(x + 1, y);
navigate(x, y + 1);
navigate(x - 1, y);
navigate(x, y - 1);
return;
}
maze[x][y] = 'P';
navigate(x + 1, y);
navigate(x, y + 1);
navigate(x - 1, y);
navigate(x, y - 1);
}
要放下我做使它工作的事。它已經雖然相當一段時間,但任何人讀它可能會發現它有幫助。
我剛剛創建數組和這些數組數組。每個路徑都是stor ed,只是選擇了一個最大數字,但在理想的情況下,你應該給它長度行*列(因爲這是最大長度)。你找到一個結束後創建一個。
我想你會得到更好的答案,如果你爲你的問題添加一個示例測試用例。 – sowrov 2013-03-21 16:18:04