public class duigui {
public static void main(String[] args) {
/*
思路 地图的创建 其中 1表示障碍物,2表示走过的路,3表示走过的路 但是路死了
决策 自由选择路径 可以先下->右->上->左;
决策不同 对应的路径也不同,
*/
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;
System.out.println("地图");//地图的建立 四周用1包围
for (int i = 0; i < 8; i++) {
for (int j = 0; j < 7; j++) {
System.out.print(map[i][j] + " ");
}
System.out.println();
}
System.out.println(setWay(map, 1, 1));
for (int i = 0; i < 8; i++) {
for (int j = 0; j < 7; j++) {
System.out.print(map[i][j] + " ");
}
System.out.println();
}
}
//开始走
public static boolean setWay(int map[][], int i, int j) {
if (map[6][5] == 2) {//递归基 先考虑出递归的情况 即是达到了map【6】【5】这个位置
return true;
} else {
if (map[i][j] == 0) {//注意这里是map[i][j]没有走过
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, j + 1)) return true;//然后右边
else if (setWay(map, i + 1, j)) return true;//然后走下
else {//不能走就标记为3并且返回false
map[i][j] = 3;
return false;
}
} else {/*这个是时候的map【i】【j】=1或者2或者3
1障碍物3不通 返回false
2表示走过 那么就不走了直接返回flase*/
return false;
}
}
}
}
尚硅谷Java数据结构 迷宫问题
最新推荐文章于 2021-12-28 15:04:01 发布