package com;
public class MiGong {
public static void main(String[] args) {
//思路
//1、先创建迷宫,用二维数组表示 int map[][]=new int[8][7];
//2、先规定map数组元素值为:0表示可以走 1表示障碍物
int map[][]=new int[8][7];
//将最上面的一行和最下面的一行全部设置为1
for (int i=0;i<7;i++){
map[0][i]=1;
map[7][i]=1;
}
//将最右面的一列和最左面的一列全部设置为1
for (int i=0;i<8;i++){
map[i][0]=1;
map[i][6]=1;
}
map[3][1]=1;
map[3][2]=1;
//输出当前的地图
System.out.println("=========当前的地图情况:=========");
for (int i=0;i< map.length;i++){
for (int j=0;j<map[i].length;j++){
System.out.print(map[i][j]+" ");
}
System.out.println();//换行作用
}
T t1 = new T();
t1.findWay(map,1,1);
System.out.println("\n===找路的情况如下===");
for (int i=0;i< map.length;i++){
for (int j=0;j<map[i].length;j++){
System.out.print(map[i][j]+" ");
}
System.out.println();//换行作用
}
}
}
class T{
/*
* 使用递归函数解决老鼠出迷宫的问题
*
* 1、findway()方法专门用来找出迷宫的路径
* 2、如果找到就返回true,否则返回false
* 3、map就是二维数组,表示迷宫
* 4、ij表示自己的位置,初始化位置(1,1)
* 5、因为我们是递归找路,所以我先规定map数组各个值的含义
* //0表示可以走 1表示障碍物 2表示可以走 3表示走过,但是走不通的死路
* 6、当map[6][5]==2时说明找到通路了,就可以结束了,否则继续找。
* */
public boolean findWay(int map[][],int i,int j){
if (map[6][5]==2){//说明已经找到
return true;
}else {
if (map[i][j]==0){//当前这个位置为0,说明表示可以走
//我们假定可以走的通
map[i][j]=2;
//使用找路策略,来确定这条路是否真的可以走通
//下--》右--》上--》左
if (findWay(map,i+1,j)){//先走下
return true;
}else if (findWay(map,i,j+1)){//右
return true;
}else if (findWay(map,i-1,j)){//上
return true;
}else if (findWay(map,i,j-1)){//左
return true;
}else {
map[i][j]=3;
return false;
}
}else {
return false;
}
}
}
}