老鼠走迷宫
理论:
解法(回溯法);
老鼠的走法有上、左、下、右四个方向,在每前进一格之后就选一个方向前进,无法前
进时退回选择下一个可前进方向,如此在阵列中依序测试四个方向,直到走到出口为止,这是
递回的基本题。
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(); } } } }