-1

gd朝。.. ダイクストラ最短アルゴリズムを解くプログラムを作成しました。. コードは以下の通りです:-

#include<iostream.h>
#include<stdio.h>
#include<conio.h>
#define INFINITY 2000
#define MAXNODES 4
#define MEMBER 1
#define NONMEMBER 0
    }

入力文字列を 0 2 3 7 2 0 6 0 3 6 0 1 7 0 1 0 として指定します

しかし、開始ノードと最終ノードを選択すると、間違った出力が得られます。. どこにあるのかわからない。. 助けてください。.

4

1 に答える 1

2

最も明らかなエラーは、C++では配列をゼロから数えることです。

それで

int weight[MAXNODES][MAXNODES],precede[MAXNODES],pd;
cout<<"Enter Weight Matrix :- \n ";
for(i=1;i<=MAXNODES;i++)
{
    for(j=1;j<=MAXNODES;j++)
    {
        cout<<"["<<i<<"]["<<j<<"] :- ";
        cin>>weight[i][j];
    }
}

する必要があります

int weight[MAXNODES][MAXNODES],precede[MAXNODES],pd;
cout<<"Enter Weight Matrix :- \n ";
for(i=0;i<MAXNODES;i++)
{
    for(j=0;j<MAXNODES;j++)
    {
        cout<<"["<<i<<"]["<<j<<"] :- ";
        cin>>weight[i][j];
    }
}

他のすべてのループについても同じです。

于 2012-11-02T06:38:39.577 に答える