利用迷宫来演示递归和回溯

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
public class MapTest {//用迷宫演示的递归与回溯

public int[][] createMap() {
int[][] Map=new int[8][8];
for(int i=0;i<8;i++){
Map[0][i]=1;
Map[7][i]=1;
}
for(int i=0;i<8;i++){
Map[i][0]=1;
Map[i][7]=1;
}
Map[4][3]=1;Map[4][4]=1;Map[4][5]=1;Map[4][6]=1;
return Map;
}

public boolean setMap(int[][] Map,int i,int j,int x,int y) {
//规定:数组Map中1代表墙壁,2代表可走通,3代表不通,0代表未走过
if(Map[x][y]==2){
return true;//当重点的值等于2时,找到路径
}
if(Map[i][j]==0){//当当前的点没有走过时,进行寻路
Map[i][j]=2;
if(setMap(Map, i+1, j, x, y)){//先想下尝试
return true;//如果再下一步就找到则返回真
}else if(setMap(Map, i, j+1, x, y)){//如果找不到,会返回一个假
return true;//如果再向右步就找到则返回真
}else if(setMap(Map, i-1, j, x, y)){//如果找不到,会返回一个假
return true;//如果再向上步就找到则返回真
}else if(setMap(Map, i, j-1, x, y)){//如果找不到,会返回一个假
return true;//如果再向左步就找到则返回真
}else{//上层所有条件都为假后,执行这个
Map[i][j]=3;
return false;
}
}else{
return false;
}
}
}


利用迷宫来演示递归和回溯
https://www.liaomz.top/2020/07/05/li-yong-mi-gong-lai-yan-shi-di-gui-he-hui-su/
作者
发布于
2020年7月5日
许可协议