0
這裏是迷宮遍歷方法和full code如何解決這個遞歸迷宮算法?
import java.io.*;
import java.util.*;
public class Quest {
static char[][] maze = new char[10][10];
public static void main(String[] args) throws IOException {
Scanner scan = new Scanner(new File("quest.dat"));
String s = "";
int n = scan.nextInt();
scan.nextLine();
while (n-->0) {
for (int i=0; i<10; i++) {
s = scan.nextLine();
if (s.equals("-"))
break;
for (int j=0; j<10; j++)
maze[i][j] = s.charAt(j);
}
int r = searchR();
int c = searchC();
//System.out.println(r + " " + c);
mazeTraverse(r, c);
for (int i=0; i<10; i++) {
for (int j=0; j<10; j++)
System.out.print(maze[i][j]);
System.out.println();
}
}
}
public static void mazeTraverse(int r, int c) {
if ((r>0 && r<maze.length && c>0 && c<maze.length) && maze[r][c] == 'H')
return;
if ((r>0 && r<maze.length && c>0 && c<maze.length) && (maze[r][c]=='.' || maze[r][c]=='A')) {
if (!(maze[r][c]=='A'))
maze[r][c] = 'O';
mazeTraverse(r+1, c);
mazeTraverse(r-1, c);
mazeTraverse(r, c+1);
mazeTraverse(r, c-1);
maze[r][c] = '.';
}
}
public static int searchR() {
for (int r=0; r<10; r++) {
for (int c=0; c<10; c++) {
if (maze[r][c]=='A')
return r;
}
}
return -1;
}
public static int searchC() {
for (int r=0; r<10; r++) {
for (int c=0; c<10; c++) {
if (maze[r][c]=='A')
return c;
}
}
return -1;
}
}
當我運行它只是連續運行,不會停止程序,但我檢查,我得到了正確的R和C值,從而可能是什麼問題?迷宮是10x10,所以他們是完美的廣場。
你確定迷宮是方形的嗎?如果它不是,請查看我的答案。如果它是_is_,那麼我的回答是錯誤的,但代碼共享網站需要一段時間才能加載,所以我無法立即檢查。 – Arc676
是的,這是一個正方形,它們都是10x10。 –
在這種情況下,索引從0到9.'java.lang.ArrayIndexOutOfBoundsException:10'此錯誤表示您嘗試訪問不存在的第10個元素。 – Arc676