Java 迷宫问题(递归)

Java 迷宫问题(递归),第1张

Java 迷宫问题(递归
public class MiGong {
    public static void main(String[] args) {
        

        int[][] map = new int[8][7];
        for (int i = 0; i < 7; i++) {
            map[0][i] = 1;
            map[7][i] = 1;
        }
        for (int i = 1; i < 8; i++) {
            map[i][0] = 1;
            map[i][6] = 1;
        }

        map[3][1] = 1;
        map[3][2] = 1;

        for (int i = 0; i < map.length; i++) {
            for (int j = 0; j < map[i].length; j++) {
                System.out.print(map[i][j] + " ");
            }
            System.out.println();
        }
        System.out.println("找路的情况路线如下图");
        T t = new T();
        t.Fidway(map,1,1);  //传递数组和初始位置


        for (int i = 0; i < map.length; i++) {   //因为是引用传递,数组被T类修改了,也会影响到main函数里面的数组,所以重新输出
            for (int j = 0; j < map[i].length; j++) {
                System.out.print(map[i][j] + "    ");
            }
            System.out.println();
        }
    }
}


class T{
    public boolean Fidway(int[][] map,int i,int j){
        if(map[6][5] == 2){
            return true;
        }else{
            if(map[i][j] == 0){
                //假定可以走通 ,所以先把当前位置设置成  2
                map[i][j] = 2;
                //使用找路策略,来确定位置是否真的可以走通
                //下 → 右 → 上 → 左

                if(Fidway(map,i+1,j)){  //先走下
                    return true;
                }else if(Fidway(map,i,j+1)){   //走右
                    return true;
                }else if(Fidway(map,i-1,j)){    //走上
                    return true;
                }else if(Fidway(map,i,j-1)) {    //走左
                    return true;
                }else {
                    map[i][j] = 3;
                    return false;
                }
            }else {
                return false;
            }
        }
    }
}

迷宫的初始状态,红色部分全部为障碍物,设置为1 

 

 

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zaji/4657030.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-11-06
下一篇2022-11-06

发表评论

登录后才能评论

评论列表(0条)

    保存