用C ++编写Dijkstra算法

时间:2015-11-12 15:19:40

标签: c++ algorithm dijkstra

我有一个作业,给我一个图形,必须使用二维数组,找到从“Macomb”到“Chicago”的最短路径。我很难弄清楚应该如何开始。

我观看了一些视频,我觉得我已经掌握了Dijkstra算法的工作原理,但将其转化为代码给了我一个艰难的时刻。

我为我的图形创建了一个邻接矩阵,我使用“99”来表示不存在的边,我有一个为前辈列表创建的数组,我有一个为剩余的顶点创建的数组。我应该将每个新添加输出到最佳路径,以及每个添加到最佳路径的当前成本。最后,它应该是这样的:

路径:Macomb
费用:0
路径:Macomb - >希望
费用:2
路径:Macomb - >希望 - >爱你 费用:4
路径:Macomb - >希望 - >爱 - >和平
费用:5
路径:Macomb - >希望 - >爱 - >和平 - >信仰
费用:6
路径:Macomb - >希望 - >爱 - >和平 - >信念 - >芝加哥
费用: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就是代码中的内容,所以答案越简单就越好。

谢谢!

1 个答案:

答案 0 :(得分:0)

这是我对Dijkstra算法的实现。

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

享受它!