栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

递归-迷宫问题(java实现)

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

递归-迷宫问题(java实现)

递归-迷宫问题(java实现)

使用递归回溯给小球找路

初始化迷宫,使用1,表示迷宫边界墙

//创建二维数组模拟迷宫
int [][] map=new int[8][7];
//使用1,表示迷宫边界墙,上下置为1
for(int i=0;i<7;i++) {
    map[0][i]=1;
    map[7][i]=1;
}
//左右置为1
for(int i=0;i<8;i++) {
    map[i][0]=1;
    map[i][6]=1;
}
//设置挡板,1表示
map[3][1]=1;
map[3][2]=1;

核心算法,约定走路策划,:先下->右->上->左,若走不通·,再回溯。

map[i][j]=0表示未走过,=1表示已经走过不能走,2表示通路可以走,3表示该点已经走过,但是不通。

//使用递归回溯给小球找路*******************************************

public static boolean setWay(int[][] map,int i,int j) {
    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 {
                //说明该点死路,置为3
                map[i][j]=3;
                return false;
            }
        }else {   //如果点不等于0,可能1墙,2走过,3死路
            return false;
        }
    }
}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/820245.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号