我使用 Java 创建一个由指定的“行”和“列”组成的迷宫,看起来像一个网格。我计划使用深度优先递归方法在房间(由行和列创建的框)之间“打开门”。
我需要帮助编写一个 openDoor 方法来断开房间之间的链接。
我使用 Java 创建一个由指定的“行”和“列”组成的迷宫,看起来像一个网格。我计划使用深度优先递归方法在房间(由行和列创建的框)之间“打开门”。
我需要帮助编写一个 openDoor 方法来断开房间之间的链接。
尝试这样的事情:示例
因为你提到了深度优先(-搜索)(DFS),我假设你的迷宫是一个节点代表房间的图。如果房间之间有未上锁的门,则节点连接。该图可能是循环的。
你有一个起始房间,可能正在迷宫中寻找东西。所以你进入一个房间,检查每一扇门,不管它是没有上锁的,还是你有适合打开每一扇可能的门的钥匙。你可能会找到一把钥匙。然后您将该密钥添加到您的密钥环并在开始房间重新启动。
正式(改编自de:wikipedia;另见en.wikipedia):
DFS(node, goal)
{
if (node == goal)
return node;
else if (node.contains(newKey))
{
addToKeyRing(newKey);
resetMaze();
DFS(startRoom, goal);
} else
{
stack := expand (node) // all unvisited rooms that can be entered pushed on stack
while (stack is not empty)
{
node' := pop(stack);
DFS(node', goal);
}
}
}