package day8;
public class MiGong {
public static void main(String[] args) {
int[][] Migong = new int[8][7];
// 将迷宫的周围置为1表示墙
// 列
for (int i =0;i<8;i++){
Migong[i][0]=1;
Migong[i][6]=1; //7个 0123456 所以到6
}
// 行
for (int i=0;i<7;i++){
Migong[0][i]=1;
Migong[7][i]=1; // 8个 01234567
}
Migong[3][1]=1;
Migong[3][2]=1;
for (int i=0;i<8;i++){
for (int j=0;j<7;j++){
System.out.print(Migong[i][j]+" ");
}
System.out.println();
}
setWay(Migong,1,1);
//输出新的地图
System.out.println("新地图");
for (int i=0;i<8;i++){
for (int j=0;j<7;j++){
System.out.print(Migong[i][j]+" ");
}
System.out.println();
}
}
// 使用递归给小球找路
// 从1,1开始 6,5结束
// 如果小球可以找到6,5说明结束
// 1为墙 2为通路可以走 3为该点走过,但是走不通 0为该点没有走过。
// 顺序 下 右 上 左
public boolean setWay(int [][] map, int i,int j){
// 判断是否为结束
int count=0;
if (map[6][5]==2){
return true;
}else {
//下
if (map[i][j]==0){//此路没有走过
map[i][j]=2; //假设此路可以走通
// 找下一条路 下 右 上 左
if (setWay(map,i+1,j)){
count++;
return true;
}else
if (setWay(map,i,j+1)){
count++;
return true;
}else
if (setWay(map,i-1,j)){
count++;
return true;
}else
if (setWay(map,i,j-1)){
count++;
return true;
}else {
map[i][j]=3; //此路不同 i,j这个节点不通。
return false;
}
}else {
return false; //map[i][j]不等于0,则他为123 都返回false。
}
}
}
}
迷宫问题(递归)
最新推荐文章于 2022-11-02 11:10:08 发布