数据结构递归 小球行走迷宫问题 - MazeApp 类
最编程
2024-06-29 21:29:20
...
public class MazeApp {
public static void main(String[] args) {
int[][] map = new int[8][7];
/**
* 设置第一行和最后一行为墙,设置为1
*/
for(int i=0;i<7;i++){
map[0][i]=1;
map[7][i]=1;
}
/**
* 设置第一列和第七列为墙
*/
for(int i=1;i<=6;i++){
map[i][0]=1;
map[i][6]=1;
}
/**
* 设置障碍墙
*/
map[3][1]=1;
map[3][2]=1;
System.out.println("新的迷宫");
for(int[] row:map){
for (int value:row){
System.out.print(value+"\t");
}
System.out.println();
}
isRun(map,1,1);
System.out.println("小球走得路线");
for(int[] row:map){
for (int value:row){
System.out.print(value+"\t");
}
System.out.println();
}
}
/**
* 小球从哪一个位置开始出发,起始位置1:1
* map是地图对象
* 最终小球要到达的位置6:5
* map数组的元素为0时表示该点没有走过,
* 元素为1时表示是墙,
* 元素为2时表示可以走,而且已经走过了,
* 当元素为3时表示已经尝试走了但是走不通
* 我们的小球可以一直走但是当走不同的时候小球可以自己调用一下自己
* 来查看自己的路在何方(接下来该怎莫走)
*/
//判断是否可以通过的函数
public static boolean isRun(int[][] map,int i,int j){
if(map[6][5]==2){//我们只测试一次//递归结束条件,小球到达终点
return true;
}else {
if (map[i][j]==0) {//没有走过该点
map[i][j]=2;//因为这是小球现在所在的位置应标为2
//下,右,上,左
if(isRun(map,i+1,j)){
return true;
}else if(isRun(map,i,j+1)){
return true;
}else if(isRun(map,i-1,j)){
return true;
}else if(isRun( map,i,j-1)){
return true;
}else {
map[i][j]=3;
return false;
}
}else {
return false;
}
}
}
}
上一篇: h5 小球走迷宫游戏源代码
下一篇: [LeetCode] 490.迷宫