老鼠走迷宫

理论:

解法(回溯法);

老鼠的走法有上、左、下、右四个方向,在每前进一格之后就选一个方向前进,无法前
进时退回选择下一个可前进方向,如此在阵列中依序测试四个方向,直到走到出口为止,这是
递回的基本题。

java实现:

package 经典;

public class 老鼠走迷官1 {
    
    
    public 老鼠走迷官1() {
        // TODO 自动生成的构造函数存根
    }
    
    static int maze[][] =     //2表示围墙
        {
        {2, 2, 2, 2, 2, 2, 2}, 
        {2, 0, 0, 0, 0, 0, 2}, 
        {2, 0, 2, 0, 2, 0, 2}, 
        {2, 0, 0, 0, 0, 2, 2}, 
        {2, 2, 0, 2, 0, 2, 2}, 
        {2, 0, 2, 0, 0, 0, 2}, 
        {2, 2, 2, 2, 2, 2, 2}
        };
    
    static int success=0;
    
    static int startI = 1, startJ = 1;
    static int endI = 5, endJ = 5;
    
    public static int visit(int i,int j){
        
        maze[i][j]=1;
        
        if(i==endI&&j==endJ)
            success=1;
        
        if(success!=1&&maze[i][j+1]==0) visit(i,j+1);  //向下
        if(success!=1&&maze[i+1][j]==0) visit(i+1,j);  //向右
        if(success!=1&&maze[i][j-1]==0) visit(i,j-1);  //向左
        if(success!=1&&maze[i-1][j]==0) visit(i-1,j);  //向上
        
        if(success!=1)
            maze[i][j]=0;
        
        return success;
        
    }
    public static void main(String[] args) {
        
        System.out.println("显示迷宫");
        
        for(int i=0 ;i<7; i++)
        {
            for(int j=0; j<7; j++)
            {
                System.out.print(maze[i][j]+",");
            }
            System.out.println();
            
        }
        
        System.out.println();
        
        if(visit(startI,startJ)==1){
            for(int i=0 ;i<7; i++)
            {
                for(int j=0; j<7; j++)
                {
                    System.out.print(maze[i][j]+",");
                }
                System.out.println();    
            }
            
        }
        
    }
    


}

 

posted @ 2014-10-05 10:25  凡尘里的一根葱  阅读(642)  评论(0编辑  收藏  举报