我正在尝试使用d&c进行递归求解迷宫。我已经阅读了d&c算法的内容,但是在将其递归使用程序时遇到了麻烦。我能够使程序打印出迷宫,表明程序已经走过了整个迷宫,并打印了出口坐标,但是我无法让它仅显示最短的正确路径(而不是显示它正在运行)迷宫中的每个点)。我也有一个问题,它既要打印出口坐标又要打印起点坐标,这不是我想要的。
任何帮助或提示将不胜感激。我并不是直接寻找“这就是您的做法”,而是尝试这种方法或d&c应该真正像这样使用。
我还包括了递归方法。迷宫由一个1的边界板组成,所有可用路径均为0。当检查并运行0时,它将变成2。
public int RecursiveRead(int row, int column, int pathLength) {
try {
if (maze[row][column] == 1) {
return -1;
}
if (maze[row][column] == 0) {
maze[row][column] = 2;
return 1 + (Math.min(Math.min(RecursiveRead(row + 1, column, pathLength + 1), RecursiveRead(row - 1, column, pathLength + 1)),
Math.min(RecursiveRead(row, column + 1, pathLength + 1), RecursiveRead(row, column - 1, pathLength + 1))));
}
} catch (ArrayIndexOutOfBoundsException e) {
maze[row][column] = 2;
System.out.println("Exit is: (" + row + ", " + column + ")");
}
return 1;
}
public void MazeSolver() {
if (RecursiveRead(1, 0, 0) == -1) {
System.out.println("There is no exit");
return;
} else {
try {
FileWrite();
} catch (IOException e) {
e.printStackTrace();
}
}
return;
编辑: 澄清的问题: 我想知道如何使用分而治之递归地找到出口的最短路径,或者是否不存在出口。