我的算法有一個任務,在那裏我給出一個圖,必須使用二維數組,並找到「馬科姆」到「芝加哥」的最短路徑。我很難搞清楚我該如何開始。編程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是什麼代碼,所以答案更好的那麼複雜。
謝謝!
http://rosettacode.org/wiki/Dijkstra's_algorithm#C.2B.2B –
[this](http://www.geeksforgeeks.org/greedy-algorithms-set-6-dijkstras-shortest-path -algorithm /)對於一些代碼也是很好的解釋。 – AntiHeadshot