迷宫专用findway方法
* * * * * * * *
* *
* * *
* * * *
* *
* *
* *
* * * * * * * *
public class miGong {
//编写一个main方法
public static void main(String[] args) {
int[][] map = new int[8][7];
for (int i = 0;i < 8 ;i++ ) {
map[i][0] = 1;
map[i][6] = 1;
}
for (int j = 0;j < 7 ;j++ ) {
map[0][j] = 1;
map[7][j] = 1;
}
map[3][1] = 1;
map[3][2] = 1;
map[2][2] = 1;//添加障碍物,使用回溯功能
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();
}
//使用dindWay给老鼠找路
AA t1 = new AA();
t1.findWay(map , 1 , 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();
}
}
}
/*
* * * * * * * *
* *
* *//回溯时用到此障碍物 *
* * * *
* *
* *
* *
* * * * * * * *
*/
class AA {
//使用递归,回溯的思想解决老鼠出迷宫
//1.findWay方法就是专门来找出迷宫的路径
//2.如果找到就返回ture 否则就返回false
//3.map 是二维数组,用来表示迷宫
//4.i j 用来表示老鼠的位置,初始位置为{1 , 1}
//5.用递归来找路 ,所以先规定不同数的含义
// 0表示未走但可以走的路 1表示障碍物 2表示已走并且可以走的路 3表示已走但走不通的路
public boolean findWay(int map[][] ,int i ,int j) { //findWay是专门用来找迷宫的方法
if (map[6][5] == 2) {
return true;
} else {
if (map[i][j] == 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;
}
}
}
}