CFS中迷宫的DFS最短路径

时间:2014-03-31 14:22:08

标签: c++ depth-first-search maze

我无法弄清楚如何让它发挥作用...我试图通过DFS尝试到达目标的最短路径。我知道BFS更好但我被要求使用DFS。正如你所看到的,我试图在导致最终找到目标的所有堆栈之间进行比较,但是它不起作用,只有第一个导致目标的堆栈被打印出来......我知道我需要的地方取消访问节点,但我无法确切知道如何。现在我确实找到了通向目标的路径,但不是最短路径。对此的任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:2)

使用自己的堆栈编写非递归DFS是可能的,但我发现递归解决方案更优雅。这是一个草图:

DFS(vertex)

    path.push_back(vertex)
    visited[vertex] = true

    if we found the exit
        output path
    else
        for each neighbor v of vertex
            if not visited[v]
                DFS(v)

    visited[vertex] = false
    path.pop_back()