代码:
public static void main(String[] args){
Scanner scanner=new Scanner(System.in);
int[][] maze=new int[8][7];
for (int i = 0; i <8 ; i++) {
maze[i][0]=1;
maze[i][6]=1;
}
for (int i = 0; i <7 ; i++) {
maze[0][i]=1;
maze[7][i]=1;
}
maze[3][1]=1;
maze[3][2]=1;
maze[1][2]=1;
maze[2][2]=1;
for (int i = 0; i < 8; i++) {
for (int j = 0; j <7 ; j++) {
System.out.printf("%d\t",maze[i][j]);
}
System.out.println();
}
if( mazeGame(maze,1,1,6,5)){
System.out.println("迷宫已走通");
}else{
System.out.println("迷宫未走通");
}
for (int i = 0; i < 8; i++) {
for (int j = 0; j <7 ; j++) {
System.out.printf("%d\t",maze[i][j]);
}
System.out.println();
}
}
/**
* 当前点设为2 自 右 下 左 上 依次查看是否走得通 走过走不通的点设为3 走得通设为2 阻挡物为1 未走过为0
* @param maze 表示地图
* @param starterow 起点行
* @param starteline 起点的列
* @param finishrow 终点行
* @param finishline 终点列
* @return true表示可以走出迷宫 false表示未走出迷宫
*/
public static boolean mazeGame(int[][] maze,int starterow,int starteline,int finishrow,int finishline){
if(starterow==finishrow&&starteline==finishline){
maze[finishrow][finishline]=2;
return true;
}else {
if(maze[starterow][starteline]==0){
maze[starterow][starteline]=2;
if(mazeGame(maze,starterow,starteline+1,finishrow,finishline)){
return true;
}else if( mazeGame(maze,starterow+1,starteline,finishrow,finishline)){
return true;
}else if(mazeGame(maze,starterow,starteline-1,finishrow,finishline)){
return true;
}else if(mazeGame(maze, starterow - 1, starteline, finishrow, finishline)){
return true;
}else{
maze[starterow][starteline]=3;
return false;
}
}else{
return false;
}
}
}
效果图: