📄 2.cpp
字号:
#include<stdio.h>
#include"math.h"
#define inf 999
#define N 10
int main()
{
int i,j,k;
double r,l[N];
int u,t[N],flag;
int s[N];
double w[N][N]={0,55,inf,45,25,inf,30,inf,50,inf,
55,0,30,inf,35,50,inf,60,inf,inf,
inf,30,0,15,inf,30,50,25,inf,60,
45,inf,15,0,45,30,55,20,40,65,
25,15,inf,45,0,60,10,30,inf,55,
inf,50,30,30,60,0,25,55,35,inf,
30,inf,50,inf,10,25,0,30,45,60,
inf,60,25,20,30,55,30,0,10,inf,
20,inf,inf,40,inf,15,25,45,0,20
35,20,10,45,20,inf,60,inf,30,0
};
FILE *fp;
fp=fopen("C:\\dijstra-4.txt","w");
for(i=0;i<N;i++)
{
l[i]=w[0][i];
t[i]=0;
s[i]=i;
}
u=0;
p: for (i=0;i<N;i++)
{
if(s[i]>0)
{
r=l[u]+w[u][s[i]];
if(l[s[i]]>r)
{
l[s[i]]=r;
t[s[i]]=u;
}
}
}
r=inf;
for (i=0;i<N;i++)
{if (s[i]>0)
{
if(l[s[i]]<r)
{
r=l[s[i]];
u=s[i];
k=i;
}
}
}
s[k]=0;
flag=0;
for(i=0;i<N;i++)
if (s[i]>0)
flag=1;
if(1==flag)
goto p;
else
printf("finished!\n");
fprintf(fp,"W=\n");
for (i=0;i<N;i++)
{
for(j=0;j<N;j++)
{
fprintf(fp,"%6.0f",w[i][j]);
}
fprintf(fp,"\n");
}
fprintf(fp,"l=\n");
for(i=0;i<N;i++)
fprintf(fp,"%6.0f",l[i]);
fprintf(fp,"\n");
fprintf(fp,"t=\n");
for(i=0;i<N;i++)
fprintf(fp,"%6d",t[i]);
fprintf(fp,"\n");
fclose(fp);
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -