java算法之迷宫(递归)

public class MyMaze {
    
    //定义下标
    
    //private static int startPostI;//入口I下标 
    //private static int startPostJ;//入口J下标 
    private static int endPostI;//出口I下标 
    private static int endPostJ;//出口I下标 
    
    //设置迷宫入口的坐标
//  public void setStart(int startPostI,int startPostJ) {
//      
//      MyMaze.startPostI=startPostI;
//      
//      MyMaze.startPostJ=startPostJ;
//  }
    
    //设置迷宫出口的坐标
    public void setEnd(int endPostI, int endPostJ) {
        
        MyMaze.endPostI=endPostI;
        
        MyMaze.endPostJ=endPostJ;
    }
    
    public static void visted(int[][] cell,int i,int j) {
        
        
        cell[i][j]=1;
        
        if(i==endPostI&&j==endPostJ) { //找到出口
            
            System.out.println("找到了一条出口");
            
            for(int m=0;m<cell.length;m++) {
                
                for(int n=0;n<cell[0].length;n++) {
                    
                    
                    if(cell[m][n]==2) {
                        
                        System.out.print("2");
                        
                    }else if(cell[m][n]==1) {
                        
                        System.out.print("*");
                        
                    }else {
                        
                        System.out.print(" ");
                        
                    }
                }
                
                System.out.println();
                
            }
        }
        
        //向左边找
        if(cell[i][j-1]==0) {
            
            visted(cell,i,j-1);
        }
        
        //向右
        if(cell[i][j+1]==0) {
            
            visted(cell,i,j+1);
        }
        
        //向上
        if(cell[i-1][j]==0) {
            
            visted(cell,i-1,j);
        }
        //向下
        if(cell[i+1][j]==0) {
            
            visted(cell,i+1,j);
        }
        
        
        cell[i][j]=0;
        
    }
    
    @SuppressWarnings("static-access")
    public static void main(String[] args) {
        
        int[][] maze={
                {2,2,2,2,2,2,2,2,2},
                {2,0,0,0,0,0,0,0,2}, 
                {2,0,2,2,0,2,2,0,2}, 
                {2,0,2,0,0,2,0,0,2},
                {2,0,2,0,2,0,2,0,2}, 
                {2,0,0,0,0,0,2,0,2}, 
                {2,2,0,2,2,0,2,2,2}, 
                {2,0,0,0,0,0,0,0,2}, 
                {2,2,2,2,2,2,2,2,2}
        };
        
        MyMaze cell=new MyMaze();
        
        //cell.setStart(1, 1);
        
        cell.setEnd(7, 7);
        
        cell.visted(maze, 1, 1);
    }

}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 朋友圈被小程序刷屏了,甚至很多人截了印证自己站在时尚前沿的装逼图。“无需安装、触手可及、用完即走、无需卸载”,大家...
    9a69394c00e5阅读 897评论 0 0
  • 上一章(6) 椿生与老娘抗争了两个月,没办法还是要和爱芹完婚。他对爱芹无所谓爱,也无所谓恨,只是不太喜欢她罢了。他...
    舞风眠雨阅读 1,904评论 0 5
  • 今天晚上,爸爸回来了,买了两盆高大的花,花的名字叫龙血兰,叶子是长条形状的,绿绿的,非常茂盛,长的个子比我高很多,...
    薛阔阅读 1,254评论 0 0
  • 稻田柳畔茅亭,黄昏鸿雁南行。 微醺销醉酒醒,西风梦清。 吹散漫天繁星。
    关山野客阅读 1,501评论 0 0