源代码:
package demo; public class test { public static void main(String []args){ int m = 9;//迷宫的长 int n = 9;//迷宫的宽 int MG[][] = new int [m][n];//利用二位数组表示迷宫 //1、创建迷宫 for(int i=0;i< MG.length;i++){ for(int j=0;j<MG[i].length;j++){ if(i==0||i==m-1||j==0||j==n-1){//创建出迷宫的边框 MG[i][j]=1;//1表示墙体 }else{ MG[i][j]=0;//0表示未走过的路 } } } MG[2][1]=1;//创建内部障碍物 //2、调用寻路方法求解 T t = new T(); t.Getway(MG,1,1); for(int i=0;i< MG.length;i++){ for(int j=0;j<MG[i].length;j++){ System.out.print(MG[i][j]+" "); } System.out.println(); } } } class T{ //定义寻路方法 boolean Getway(int [][]mg,int i,int j){//i,j起点2位置 if(mg[7][7]==2){//mg[7][7]表示终点位置 return true; }else{ if(mg[i][j]==0){ mg[i][j]=2;//2表示通路,先假设当前位置为通路 if(Getway(mg,i+1,j)){//向下探寻 return true; }else if(Getway(mg,i,j+1)){//向右探寻 return true; }else if(Getway(mg,i-1,j)){//向上探寻 return true; }else if(Getway(mg,i,j-1)){//向左探寻 return true; }else{ mg[i][j]=3;//3表示死路 return false; } }else{//mg[i][j]=1,2,3 return false; } } } }
迷宫: 寻路后: