我对Java相当陌生,正在尝试用递归解决迷宫。我在下面添加了部分代码。我有一个包含“字段”的二维数组。墙为 1,给出起始坐标和结束坐标。
我有一个问题;
每当路径无法继续且未达到终点时,我想删除路径的位置。我该怎么做呢?
- 我已经尝试为它添加布尔值
- 在递归结束时添加一个 maze[x][y] = '0' (empty)
但我还想不通,也许我做错了。
PS:我在论坛上搜索过,阅读了很多关于递归以及其他人如何解决他们的问题的信息,但我不知道如何修复这一点代码。
-P 代表路径 - 宽度和高度来自 2D 数组,-我从开始 navigation(xstart,ystart) 开始(这就是为什么我需要在找到 B 时尝试新位置(开始)
navigate(int x, int y) {
if (x < 0 || x > width - 1 || y < 0 || y > height - 1) {
return;
}
if (maze[x][y] == '1') {
return;
}
if (maze[x][y] == 'E') {
maze[x][y] = 'P';
}
if (maze[x][y] == 'P') {
return;
}
if (maze[x][y] == '0') {
maze[x][y] = 'P';
return;
}
if (maze[x][y] == 'B') {
maze[x][y] = 'P';
navigate(x + 1, y);
navigate(x, y + 1);
navigate(x - 1, y);
navigate(x, y - 1);
return;
}
maze[x][y] = 'P';
navigate(x + 1, y);
navigate(x, y + 1);
navigate(x - 1, y);
navigate(x, y - 1);
}
打算放下我为使它工作而做的事情。虽然已经有一段时间了,但任何阅读它的人可能会发现它很有帮助。
我刚刚创建了数组和这些数组的数组。在存储每个路径的位置,只需选择一个最大数量,但在理想情况下,您应该为其指定长度行 * 列(因为这是最大长度)。在找到结束后创建一个。