小白学java第九天
老鼠走迷宫问题
代码实现:
public class Main {
public static void main(String[] args){
int[][] map = new int[8][7];
for (int i = 0;i<7;i++){
map[0][i] = 1;
map[7][i] = 1;
}
for (int i=0;i<8;i++){
map[i][0] = 1;
map[i][6] = 1;
}
map[3][1] = 1;
map[3][2] = 1;
Test t = new Test();
t.findway(map,1,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();
}
}
}
class Test{
public boolean findway(int[][] map,int i,int j){
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;
}
}
}
}
代码逻辑:
1.利用递归的思想对各个方向是否能走通进行判断
2.迷宫通过二维数组进行表示,墙壁与障碍物定义为1,可走的地方定义为0,最终抵达终点的路径标记为2
3.在方向选择上按照下-右-上-左的顺序进行判断
4.若该路走不通则标记为3(为了解决回溯问题)
注意:该代码仅实现最基础的走到终点
实现效果:
初始地图:
路 径:
回溯现象:
初始迷宫:
路 径 :
本文分享了Java新手如何通过递归实现老鼠走迷宫的问题,以二维数组表示迷宫,演示了路径查找和回溯策略。初始迷宫地图和找路过程清晰可见。
515

被折叠的 条评论
为什么被折叠?



