太浮躁,不塌实,一知半解。
写出的程序在白云上被攻的体无完肤。
自以为Dij算法理解清楚了,实际上还是没有完全领会要领,明白是对两个集合操作,却不清楚到底要不断更新哪个数据:一知半解!
花了好大力气,终于把这段程序搞定了,看起来还算舒服。
发此文自励之,万万要克服一知半解的坏毛病!
File name: Dij.c
Description: 寻找最短路径,采用Dijskra算法
*/
#include
#define N 5
#define O 1
//集合标志
#define S 0
#define R 1
#define INF 0xFFFF
int Near[N]; //V0到其他点的最短距离
int path[N];
void Dij(int A[][N],int path[])
{
int i,j;
int n=N;
int v;
int shortest;
int bitmap[N]; //集合标志
for(i=0;i
if(path[i]==-1) { printf(“**n”);return; }
while(1){
printf(“%d”,i+1);
i=path[i];
if(i==path[i]){
printf(“<-%d",O+1);
break;
}
printf("<-");
};
printf("n");
}
int main()
{
int s[N][N]={
{0,2,1,INF,INF},
{INF,0,INF,1,3},
{INF,2,0,INF,5},
{INF,INF,INF,0,1},
{INF,INF,INF,INF,0}
};
int i,j;
printf("Orignal Martixn");
for(j=0;j