【Java】蚂蚁迷宫问题

在这里插入图片描述

package com;

public class MiGong {
    
    
    public static void main(String[] args) {
    
    
        //思路
        //1、先创建迷宫,用二维数组表示 int map[][]=new int[8][7];
        //2、先规定map数组元素值为:0表示可以走  1表示障碍物

        int map[][]=new int[8][7];
        //将最上面的一行和最下面的一行全部设置为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;
        }
        map[3][1]=1;
        map[3][2]=1;
        //输出当前的地图
        System.out.println("=========当前的地图情况:=========");
        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();//换行作用
        }

        T t1 = new T();
        t1.findWay(map,1,1);
        System.out.println("\n===找路的情况如下===");
        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();//换行作用
        }
    }
}
class T{
    
    
    /* 
    * 使用递归函数解决老鼠出迷宫的问题
    *
    * 1、findway()方法专门用来找出迷宫的路径
    * 2、如果找到就返回true,否则返回false
    * 3、map就是二维数组,表示迷宫
    * 4、ij表示自己的位置,初始化位置(1,1)
    * 5、因为我们是递归找路,所以我先规定map数组各个值的含义
    *       //0表示可以走    1表示障碍物  2表示可以走  3表示走过,但是走不通的死路
    * 6、当map[6][5]==2时说明找到通路了,就可以结束了,否则继续找。
    * */
    public boolean findWay(int map[][],int i,int j){
    
    
        if (map[6][5]==2){
    
    //说明已经找到
            return true;
        }else {
    
    
            if (map[i][j]==0){
    
    //当前这个位置为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-1,j)){
    
    //上
                    return true;
                }else if (findWay(map,i,j-1)){
    
    //左
                    return true;
                }else {
    
    
                    map[i][j]=3;
                    return false;
                }
            }else {
    
    
                return false;
            }
        }

    }
}

猜你喜欢

转载自blog.csdn.net/weixin_43891901/article/details/128591825
今日推荐