public class Java01 {
public static void main(String[] args){
/*
1. 先规定一个8行8列的迷宫
2.给迷宫周围设置“墙”以及迷宫内的障碍物
3.设置迷宫的出口和起点(这里出口为最右下、起点为最左下)
4.设置每次走一步的顺序 下-右-上-左
5.设置0代表能走的路线,1代表障碍物,2代表出迷宫的路线,3代表此路线不通
6.当出口=2时,表示已经结束
*/
int MiGong[][]=new int[8][8];
for(int i=0 ; i<8 ; i++) {//给迷宫四周设置“墙”
MiGong[0][i]=1;
MiGong[7][i]=1;
MiGong[i][0]=1;
MiGong[i][7]=1; //如果没有赋值,数组的其他值默认为0
}
//给迷宫设置障碍物
MiGong[3][1]=1;
MiGong[3][2]=1;
MiGong[2][2]=1;
System.out.println("====当前迷宫为====");
//输出迷宫
for(int i=0 ; i< MiGong.length ; i++) {
for(int j=0; j<MiGong[i].length; j++) {
System.out.print(MiGong[i][j]);
}
System.out.println();
}
AA findMiGong=new AA();
findMiGong.find(MiGong,1,1);//传入迷宫和初始位置
System.out.println("====出迷宫的路线为====");
//输出出迷宫的路线
for(int i=0 ; i< MiGong.length ; i++) {
for(int j=0; j<MiGong[i].length; j++) {
System.out.print(MiGong[i][j]);
}
System.out.println();
}
}
}
class AA{
//设置一个方法,用来寻找路线 arr表示迷宫 i和j表示起点坐标
public boolean find(int arr[][], int i ,int j) {
if(arr[6][6]==2){ //当出口值为2时,表示已经出来了,递归结束
return true;
}else {
if(arr[i][j]==0) { //0表示可走的
arr[i][j]=2; //先把当前位置假定为可出迷宫的路线
//验证当前位置是否真正可出,按下-右-上-左走
if(find(arr,i+1,j)) { //往下走
return true;
}else if(find(arr,i,j+1)) {//往右走
return true;
}else if(find(arr,i-1,j)) {//往上走
return true;
}else if(find(arr,i,j-1)) {//往左走
return true;
}else {
arr[i][j]=3; //四周都走不了,表示此路不通,设为3
return false;
}
}
else {
//当arr[i][j]==1和3时表示走不了 等于2时在上面if语句语句走过了,就不需要再走了
return false;
}
}
}
}
如果对上述代码有不明白的,欢迎评论区留言讨论!