美文网首页
java算法之迷宫(递归)

java算法之迷宫(递归)

作者: 上下而求索 | 来源:发表于2018-11-13 21:18 被阅读0次
    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);
        }
    
    }
    

    相关文章

      网友评论

          本文标题:java算法之迷宫(递归)

          本文链接:https://www.haomeiwen.com/subject/ymlrfqtx.html