首页 > 代码库 > 老鼠走迷宫

老鼠走迷宫

理论:

解法(回溯法);

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

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();                }                    }            }    }

 

老鼠走迷宫