迷宫求解器,仅对角线移动

时间:2013-11-21 16:02:33

标签: java recursion maze

我获得了一些代码,其中包含了构建迷宫的所有内容。我写的是makeMove方法来解决迷宫,我在这里完成了:

int MAX_ROWS = endRow + 1;
int MAX_COLS = endCol + 1;
boolean[][]visited = new boolean[MAX_ROWS][MAX_COLS];
protected void makeMove( int row, int col )
{
    boolean found = false;
    if (row < 0 || row >= MAX_ROWS  || col < 0 || col >= MAX_COLS  || visited[row][col] || maze[row][col] == 1)
        return;

    visited[row][col] = true;
    found = row == endRow && col == endCol;

    if (!found) {
        makeMove(row, col - 1);
        makeMove(row, col + 1);
        makeMove(row - 1, col);
        makeMove(row + 1, col);
    }
  System.out.print("\n[" + row + "," + col + "] ");    // display location
}//end makeMove

}

假设开头位于左上角,而结尾位于右下角,此代码的工作方式与此相符。

然而,现在我需要修改它,以便它只允许对角移动....

我现在停滞不前,在如何完成这个

上留下了空白

感谢您提供的任何帮助

1 个答案:

答案 0 :(得分:1)

使用

makeMove(row - 1, col - 1);
makeMove(row - 1, col + 1);
makeMove(row + 1, col - 1);
makeMove(row + 1, col + 1);