java算法之迷宫(递归)

2018-11-13  本文已影响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);
    }

}
上一篇下一篇

猜你喜欢

热点阅读