繁体   English   中英

DFS在C ++中迷宫的最短路径

[英]DFS shortest path of a maze in C++

我在弄清楚如何使它正常工作方面遇到困难...我正在尝试使用DFS获得达到目标的最短路径。 我知道BFS更好,但是我被要求为此使用DFS。 如您所见,我尝试在所有导致目标找到的堆栈之间进行比较,但是这种方法不起作用,只有第一个导致目标的堆栈才被打印出来……我知道我需要在某个地方取消访问节点,但我不知道具体如何操作。 现在,我确实可以达成目标,但并非最短目标。 任何帮助,将不胜感激。

通过使用自己的堆栈,可以编写非递归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()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM