Java算法-迷宫

思路

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版权协议,转载请附上原文出处链接和本声明。