思路
1、先创建地图
2、使用方法和递归找出迷宫的路径
3、因为是递归找路,所以规定每个map数组的含义
4、0表示可以走、1表示墙、2表示走过的路、3表示走过但是走不通
5、如果找到了路就返回true否则false
代码实现
第一步
先创建一个二位数组,模拟迷宫地图,然后在创建上下为1的墙
int[][] map=new int[8][7];
for (int i=0;i<7;i++){
//使用1表示墙
// 上下全部置为1
map[0][i]=1;
map[7][i]=1;
}
第二步
在创建左右为1的墙
for (int i=0;i<8;i++){
map[i][0]=1;
map[i][6]=1;
}
第三步
输出地图情况
System.out.println("地图情况");
for (int i=0;i<8;i++){
for (int j=0;j<7;j++){
System.out.print(map[i][j]+" ");
}
System.out.println();
}
第四步
创建一个Boolean类型的方法,找出迷宫的出路,我这里数组map[6][5],表示迷宫终点的位置
public static boolean setWay(int[][] map,int i,int j){//map[][]表示各个值的意义
if (map[6][5]==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{
map[i][j]=3;
return false;
}
}else {
return false;
}
}
}
第五步
运行setWay方法
setWay(map,1,1);//导入map迷宫地图,起始位置从1,1开始
第六步
输出现在迷宫
System.out.println("走过,并标识过的地图的情况");
for (int i=0;i<8;i++){
for (int j=0;j<7;j++) {
System.out.print(map[i][j]+" ");
}
System.out.println();
}
}
结果
地图情况
1 1 1 1 1 1 1
1 0 0 0 0 0 1
1 0 0 0 0 0 1
1 0 0 0 0 0 1
1 0 0 0 0 0 1
1 0 0 0 0 0 1
1 0 0 0 0 0 1
1 1 1 1 1 1 1
走过,并标识过的地图的情况
1 1 1 1 1 1 1
1 2 2 2 2 2 1
1 0 0 0 0 2 1
1 0 0 0 0 2 1
1 0 0 0 0 2 1
1 0 0 0 0 2 1
1 0 0 0 0 2 1
1 1 1 1 1 1 1
版权声明:本文为m0_60509400原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。