代码思路
1.创建二位数组作为迷宫
2.数字1为墙壁,2为经过的位置,3为死路,0为未探寻的位置
3,定义一个起点和终点,运用递归的方法,按照自己设计的寻找方向的优先级运行,直到让终点值为2则返回true,未找到返回false。
4.重新遍历输出二维数组,2的轨迹则为出口路径
代码如下
public class MiGongAPP {
public static void main(String[] args) {
// TODO 自动生成的方法存根
int[][] map=new int[7][8];
for(int i=0;i<7;i++) {
map[i][0]=1;
map[i][7]=1;
}
for(int j=0;j<8;j++) {
map[0][j]=1;
map[6][j]=1;
}
map[3][1]=1;
map[3][2]=1;
// map[2][2]=1;
// map[1][2]=1;
System.out.println("地图为:");
for(int i=0;i<7;i++){
for(int j=0;j<8;j++) {
System.out.printf(map[i][j]+" ");
}
System.out.println();
}
setWay(map, 1, 1);
System.out.println("出口轨迹:");
for(int i=0;i<7;i++){
for(int j=0;j<8;j++) {
System.out.printf(map[i][j]+" ");
}
System.out.println();
}
}
public static boolean setWay(int[][] map,int i,int j) {
if(map[5][6]==2) {
return true;
}else {
if(map[i][j]==0) {
map[i][j]=2;//先将此位置定义已走过。遵循下右上左的优先级
if(setWay(map,i+1,j)) {//向下
return true;
}else if(setWay(map,i,j+1)) {//向右
return true;
}else if(setWay(map,i-1,j)) {//向上
return true;
}else if(setWay(map,i,j-1)) {//向左
return true;
}else {//如果四个方向都不为0,则此位置为死路,重新定义map[i][j],并返回到回溯到上一个结点
map[i][j]=3;
return false;
}
}else {
return false;
}
}
}
}