📄 08.c
字号:
#include<stdio.h>
main()
{int c[5],b[5],d[5]={1,1,1,1,1};
int a[5][5];int i,j,n,t,h;c[2]=0;
/*创建二维数组表示权数*/
for(h=0;h<=4;h++)
{a[0][1]=1;a[0][2]=2;a[0][3]=3;
a[0][4]=4;a[1][2]=2;
a[1][3]=4;a[1][4]=7;a[2][3]=1;
a[2][4]=1;a[3][4]=6;
/*对权数赋初值*/
for(i=0;i<=4;i++)
{for(j=i;j>=0;j--)
if(j==i)
a[i][j]=10;
else
a[i][j]=a[j][i];
}
/通过循环语句给从本地走到本地的路径赋一很大的值,不影响运行结果*/
c[3]=a[d[0]][d[1]]+a[d[1]][d[2]]+a[d[2]][d[3]]+a[d[3]][d[4]]+a[d[4]][d[0]];
/*D为中间数组,为C赋初值*/
i=0;b[0]=h;c[2]=0;
while(i!=4)
{c[1]=a[b[i]][0];c[0]=0;
for(j=0;j<=4;j++)
if(c[1]>a[b[i]][j])
{c[1]=a[b[i]][j];
c[0]=j;}
/*通过条件语句修改C*/
b[i+1]=c[0];
c[2]=c[2]+a[b[i]][c[0]];
if(i==3)
c[2]=c[2]+a[b[4]][b[0]];
for(t=0;t<=i;t++)
{a[b[t]][c[0]]=10;
a[c[0]][b[t]]=10;}
i++;
}
for(j=0;j<=4;j++)
printf("%3d",b[j]);printf("%10d\n",c[2]);
/*输出每次的最短路径*/
if(c[2]<c[3])
{for(j=0;j<=4;j++)
d[j]=b[j];c[3]=c[2];}
}
for(i=0;i<=4;i++)
printf("%3d",d[i]);
printf("%10d",c[3]);
/*输出几次比较后的最短路径*/
printf("\n");getch();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -