0

我一直在关注一个教程来尝试围绕 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;
}

有什么想法吗?

4

0 回答 0