我对Java相当陌生,正试图用递归来解决迷宫问题。我添加了以下代码的一部分。我有一个包含“字段”的2D数组。墙是1,开始坐标和结束坐标。Java递归问题迷宫
我有一个问题;
我想擦除路径的位置,只要它不能继续&末端还没有达到。我该怎么做呢?
- 我曾尝试添加布尔它
- 在递归添加迷宫的端[X] [Y] = '0'(空)
但我不它出来了,也许我做错了。
PS:我已经在论坛上搜索过,阅读了很多有关递归以及其他人如何解决他们的问题,但我无法弄清楚如何解决这个小小的代码。
-P代表路径 - 宽度&高度是从二维数组, -I与起始导航(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);
}
要放下我做使它工作的事。它已经虽然相当一段时间,但任何人读它可能会发现它有帮助。
我刚刚创建数组和这些数组数组。每个路径都是stor ed,只是选择了一个最大数字,但在理想的情况下,你应该给它长度行*列(因为这是最大长度)。你找到一个结束后创建一个。
我想你会得到更好的答案,如果你为你的问题添加一个示例测试用例。 – sowrov 2013-03-21 16:18:04