我无法弄清楚如何才能正常工作......我试图通过DFS获得到目标的最短路径。我知道BFS更好,但我被要求使用DFS。正如你所看到的,我试图比较所有导致最终找到目标的堆栈,但它不起作用,只有导致目标的第一个堆栈被打印出来......我知道我需要的地方去观察节点,但我无法弄清楚究竟如何。现在我确实走到了目标的路径,但不是最短的路径。任何帮助,这将不胜感激。C++中迷宫的DFS最短路径
1
A
回答
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()
+0
这帮助我完成了基于此模型的所有工作。非常感谢你,这使得它更有意义,并且比我试图编写的代码少很多。 – seanscal
+0
一旦你获得递归版本的工作,编写非递归版本将是一个很好的练习。一个好处是你可以将栈溢出(不是双关),而且你可以更灵活地查看当前状态,或者如果你想对算法做一些修改。 –
相关问题
- 1. 寻找迷宫中的最短路径
- 2. 迷宫路径搜索DFS java
- 3. 在C迷宫中寻找最短路径
- 4. 如何用检查点找到迷宫中的最短路径?
- 5. 寻找通过迷宫的最短路径
- 6. 巨大迷宫的最短路径(巨大)
- 7. 如何找到最短路径在这种类型的迷宫
- 8. Java-迷宫广度第一搜索最短路径
- 9. Java迷宫最短路径2d int数组
- 10. DFS迷宫发电机
- 11. DFS算法迷宫生成
- 12. 如何计算BFS算法中的移动? (在迷宫中的最短路径)
- 13. 迷宫中的路径(二维阵列)
- 14. 计算迷宫中的uniq路径数
- 15. 迷宫中的最短路径允许穿过有限数量的墙?
- 16. 在迷宫中打印最短路的长度
- 17. 序言:在迷宫中寻找路径
- 18. 使用递归DFS在迷宫中打印所有可能的路径
- 19. 使用邻接矩阵在迷宫图中找到最短路径
- 20. 我无法从迷宫中找到最短路径(广度优先搜索)
- 21. 如何使用广度优先搜索在迷宫中找到最短路径?
- 22. 使用DFS的迷宫一代
- 23. 最短路径C#
- 24. 生成迷宫使用DFS算法
- 25. 麻烦创建一个DFS迷宫
- 26. 迷宫算法路径查找器
- 27. 迷宫与路径寻找算法
- 28. 路径寻找迷宫错误
- 29. 穿越迷宫的最佳路线
- 30. 最快路径的迷宫(地下城)Dijstkra
任何具体的原因来编写**非递归** DFS? –
@faranwath没有具体的原因,如果在这里递归会更容易,我完全支持它 – seanscal
图是如何定义的? –