2015-11-12 27 views
1

我的算法有一個任務,在那裏我給出一個圖,必須使用二維數組,並找到「馬科姆」到「芝加哥」的最短路徑。我很難搞清楚我該如何開始。編程Dijkstra的在C++

我曾經看過一些影片,我覺得我對Dijkstra算法如何工作的把握,但把它變成代碼是給我一個艱難的時間。

我爲我的圖創建了一個鄰接矩陣,其中我使用「99」來表示不存在的邊,我爲前輩列表創建了一個數組,併爲其餘頂點創建了一個數組。我應該輸出每個新的添加到最佳路徑,以及每個添加到最佳路徑的當前成本。最後,它應該是這樣的:

路徑:馬科姆
成本:0
路徑:馬科姆 - >希望
費用:2
路徑:馬科姆 - >霍普 - >愛
費用:4
路徑:馬科姆 - >霍普 - >愛 - >和平
費用:5
路徑:馬科姆 - >霍普 - >愛 - >和平 - >信仰
成本:6
路徑:馬科姆 - >霍普 - >愛 - >和平 - >信仰 - >芝加哥
費用:8

,這裏是我要開始與代碼:

#include <iostream> 

using namespace std; 



int main() 
{ 
int graph[6][6] = {{99,2,9,5,99,99}, 
        {2,99,4,2,99,99}, 
        {9,4,99,1,1,5}, 
        {5,2,1,99,4,99}, 
        {99,99,1,4,99,2}, 
        {99,99,99,99,2,99}}; 
string pred[6] = {"Macomb", " ", " ", " ", " ", " "}; 
string cities[5] = {"hope", "peace", "love", "belief", "Chicago"}; 
int distance[6]; 

} 

我不會找人來我的代碼家庭作業,但我希望任何推動朝着正確的方向,因爲這是一項艱鉅的任務。這是一個基本的數據結構類的,我們一直在使用的唯一的#include是什麼代碼,所以答案更好的那麼複雜。

謝謝!

+0

http://rosettacode.org/wiki/Dijkstra's_algorithm#C.2B.2B –

+0

[this](http://www.geeksforgeeks.org/greedy-algorithms-set-6-dijkstras-shortest-path -algorithm /)對於一些代碼也是很好的解釋。 – AntiHeadshot

回答

0

下面是我實現的Dijkstra算法。

https://github.com/Jesusfer2575/Reference/blob/master/dijkstra.cpp

享受吧!

+1

歡迎來到Stack Overflow。請看看http://stackoverflow.com/help/how-to-answer和http://stackoverflow.com/help/deleted-answers明白爲什麼這種類型的唯一紐帶,答案很可能獲得downvoted或刪除。 – m69