我無法弄清楚如何才能正常工作......我試圖通過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
圖是如何定義的? –