在C++中对Dijkstra算法进行编程

Programming Dijkstra's algorithm in C++

本文关键字:编程 算法 Dijkstra C++ 中对      更新时间:2023-10-16

我有一个赋值,其中给我一个图,必须使用二维数组,并找到从"Macomb"到"Chicago"的最短路径。我很难弄清楚该怎么开始。

我看了一些视频,我觉得我掌握了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是代码中的内容,所以答案越不复杂越好。

谢谢!

下面是我对Dijkstra算法的实现。

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

尽情享受吧!