规定:
1为障碍物,2为可走通路,3为走过但是死路,0为未探索过的路
探索规则:下 右 左 上
起点为array[1][1]
终点为array[6][5]
运算结果:
package 迷宫;
public class 迷宫 {
public static void main(String[] args) {
int[][] map = getMap();
System.out.println("原地图:");
for (int i = 0; i < map.length; i++) {
for (int j = 0; j < map[i].length; j++) {
System.out.print(map[i][j]+" ");
}
System.out.println();
}
System.out.println("---------------get ways--------------");
boolean getways = getways(map, 1, 1);
for (int i = 0; i < map.length; i++) {
for (int j = 0; j < map[i].length; j++) {
System.out.print(map[i][j]+" ");
}
System.out.println();
}
System.out.println(getways);
}
public static int[][] getMap(){
int[][] map = new int[8][7];
for (int i = 0; i < map.length; i++) {
map[i][0] = 1;
map[i][map[0].length-1] = 1;
}
for (int i = 0; i < map[0].length; i++) {
map[0][i] = 1;
map[map.length-1][i] = 1;
}
//障碍
map[2][1] = 1;
map[2][2] = 1;
map[4][2] = 1;
map[4][3] = 1;
map[4][5] = 1;
map[5][4] = 1;
return map;
}
public static boolean getways(int[][] map,int i,int j){
if (map[6][5] == 2){
return true;
}else{
if (map[i][j] == 0){
map[i][j] = 2;
if (getways(map,i+1,j)){//向下
return true;
}else if (getways(map,i,j+1)){//右
return true;
}else if (getways(map,i,j-1)){//左
return true;
}else if (getways(map,i-1,j)){//上
return true;
}else{
map[i][j] = 3;
return false;
}
}else{
return false;
}
}
}
}