-1

早上好。..我做了一个程序来解决dijkstra最短算法。. 代码如下:-

#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 回答