JAVA迭代处理迷宫问题

迭代解决迷宫问题

/**
 * @author DR
 * @number 190615
 * @date 2021/6/25 20:34
 */
public class Maze {
    public static void main(String[] args){
        maps Mygame = new maps();
        int[][] m1 = Mygame.map();
        for(int i = 0; i<m1.length; i++) {
            for (int j = 0; j <m1[i].length; j++) {
                System.out.print(m1[i][j] + " ");
            }
            System.out.println();
        }

        FINDWAYS Myway = new FINDWAYS();
        Myway.findway(m1,1,1);
        System.out.println("路线如下");
        for(int i = 0; i<m1.length; i++) {
            for (int j = 0; j <m1[i].length; j++) {
                System.out.print(m1[i][j] + " ");
            }
            System.out.println();
        }


    }
}

class maps{
    public int[][] map(){
        int mapsize[][] = new int [8][7];
        for(int i = 0; i<mapsize.length; i++){
            for(int j = 0; j<mapsize[i].length; j++){
                mapsize[0][j] = 1;
                mapsize[7][j] = 1;
                mapsize[i][0] = 1;
                mapsize[i][6] = 1;
            }
        }
        mapsize[3][1] = 1;
        mapsize[3][2] = 1;
        mapsize[1][4] = 1;
        mapsize[2][4] = 1;
        mapsize[3][4] = 1;
//      mapsize[4][4] = 1;
        mapsize[5][4] = 1;
        mapsize[5][3] = 1;
        mapsize[5][2] = 1;
        return mapsize;
    }
}

class FINDWAYS{
    public boolean findway(int[][] map,int i,int j){//地图,(i,j)当前坐标
        //0--路, 1--障碍, 2--可以走(选择过), 3--死路
        if(map[6][5] == 2){//已经找到通路
            return true;
        }else {
            if(map[i][j] ==0 ){
                map[i][j] = 2;
                if(findway(map,i+1,j)){//向下找
                    return true;
                }else if(findway(map,i,j+1)){//右
                    return true;
                }else if(findway(map,i,j-1)){//左
                    return true;
                }else if (findway(map,i-1,j)){//上
                    return true;
                }else{
                    map[i][j] = 3;
                    return false;
                }
            }else{
                return false;
            }
        }
    }

}

迷宫本宫

在这里插入图片描述

计算出的通路

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值