public class TTtset{
public static void main(String[]args){
//老鼠走迷宫
//先做一个二维数组8*8的 1表示墙 0表示通
int [][] map = new int[8][8];
for (int i = 0; i < map.length;i++){
for(int j = 0;j < map[i].length;j++){
map[0][j] = 1;
map[7][j] = 1;
map[i][0] = 1;
map[i][7] = 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("");
}
Test t = new Test();
t.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("");
}
}
}
//起点map[1][1] 终点map[6][6]
//当老鼠走到map[6][6]时 表示找到路
//当老鼠此路通的时候返回2 当路走过没有走通则返回3
//编译一个方法 返回值为boolean 方法名为findway 形参为二维数组
class Test{
public boolean findWay(int[][] map, int i ,int j){
if (map[6][6] == 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; //false会返回调用的栈,回溯 重新运行
}
}
}
递归方法-解决老鼠迷宫
于 2022-05-10 17:59:52 首次发布