使用递归回溯来给小球找路
先创建二维数组map[ ][ ],模拟迷宫。
约定:使用“0”表示没有走过,“1”表示墙,“2”表示通路可以走,“3”表示已经走过但是走不通。
i,j表示从哪个位置开始出发(1,1)
制定行走的策略,先走 下->右->上->左,如果走不通再回溯
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 {// 如果map[i][j]!=0,可能是1,2,3
return false;
}
}
}