我一直在关注一个教程来尝试围绕 Dijkstra 的最短路径算法。最初它是用 Java 编写的,但我尽力将其切换到 C++,但不幸的是,我遇到了一个似乎无法解决的问题。
这是我的代码
错误发生在该行
---Distancearray[0] = Testarray[0];
#include <iostream>
using namespace std;
int main(){
int Testarray[5][5] = {{}};
//stores first row of test array
//updates when visiting nodes
int Distancearray[5] = {};
//stores visited nodes
int visitedN[5] = {};
//stores previous node
int PreviousN[5] = {};
//holds the minimum value
int Min = 999999;
//holds the next node value
int NextNode = 0;
cout << "Enter Numbers:\n" << endl;
for(int i=0; i < 5; i++){
//initialize visited array to 0
visitedN[i] = 0;
//same
PreviousN[i] = 0;
for(int j=0; j < 5; j++){
cin >> Testarray[i][j];
if(Testarray[i][j] == 0){
//sets the largest possible number
Testarray[i][j] = 999999;
}
}
}
Distancearray[0] = Testarray[0];
//Sets source node as checked
visitedN[0] = 1;
//Sets distance from sources to 0, starting point
Distancearray[0] = 0;
for(int i=0; i<5; i++){
Min = 9999999;
for(int j = 0; j<5 ; j++){
if(Min > Distancearray[j] && visitedN[j] != 1){
//sets next node to J
Min = Distancearray[j];
NextNode = j;
}
}
visitedN[NextNode] = 1;
for(int i=0; i<5; i++){
if(visitedN[i] != 1){
if(Min+Testarray[NextNode][i] <= Distancearray[i]){
Distancearray[i] = Min+Testarray[NextNode][i];
PreviousN[i] = NextNode;
}
}
}
}
for(int i=0; i<5; i++){
cout << "Lenght" + Distancearray[i] << endl;
}
for(int i=0; i<5; i++){
int j;
cout <<"Path:" + i << endl;
j=i;
do{
j = PreviousN[j];
cout<<"<---" + j<<endl;
}
while(j!=0);
}
return 0;
}
有什么想法吗?