假设有一块地图,从出发点到终点,有很多种路径,我们可以指定路径策略来指定先后顺序。
public class Hello {
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 = 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 < 8; i++) {
for (int j = 0; j < 7; j++) {
System.out.print(map[i][j] + " ");
}
System.out.println();
}
}
}
地图初始化
创建一个方法,标记小球路线
//递归设定小球线路
/*
* 参数:地图
* 坐标i开始(从1,1开始) j结束(6,5)
* 返回值:如果找到返回true否则false
* 约定:0没走过 1不能走 2行进路线 3折返,走不通
* 策略:下 右 上 左
* */
public static boolean setWay(int[][] map, int i, int j) {
if (map[6][5] == 2) {
return true;
} else {
//没找到
//没走过
if (map[i][j] == 0) {
//假设可以走通
map[i][j] = 2;
//下
if (setWay(map, i + 1, j)) {
return true;
//右
} else if (setWay(map, i, j + 1)) {
return true;
//上
} else if (setWay(map, i - 1, j)) {
return true;
//左
} else if (setWay(map, i, j - 1)) {
return true;
} else {
//走不通
map[i][j]=3;
return false;
}
}else {
return false;
}
}
}
2代表行进路线,即小球找路的策略。
来源:CSDN
作者:氵何章怀晓 。
链接:https://blog.csdn.net/GiantCrocodile/article/details/104555170