當前位置:編程學習大全網 - 源碼下載 - floyd法求最短路,題目如圖,要求用C—FREE運行時能鍵入起點終點,得到最短路長度和路徑,跪求靠譜源代碼

floyd法求最短路,題目如圖,要求用C—FREE運行時能鍵入起點終點,得到最短路長度和路徑,跪求靠譜源代碼

#include<stdio.h>

#define N 1000

int R[10][10];

void Print(int n,int m)

{

int t=R[n][m];

if(t==0)

printf("->%d ",m);

else

{

Print(n,t);

Print(t,m);

}

}

int main()

{

double a[10][10],d[10][10];

int i,j,k;

for(i=1;i<=9;++i)

{

for(j=1;j<=9;j++)

{

if(i==j)

{

a[i][j]=0;

R[i][j]=i;

}

else

{

a[i][j]=N;

R[i][j]=0;

}

}

}

a[1][2]=a[2][1]=4.5;

a[1][4]=a[4][1]=4.5;

a[2][3]=a[3][2]=4.5;

a[2][5]=a[5][2]=4;

a[3][6]=a[6][3]=4.5;

a[4][5]=a[5][4]=2;

a[4][7]=a[7][4]=4.5;

a[5][6]=a[6][5]=2;

a[5][8]=a[8][5]=4;

a[6][9]=a[9][6]=4.5;

a[7][8]=a[8][7]=4.5;

a[8][9]=a[9][8]=4.5;

for(i=1;i<=9;++i)

{

for(j=1;j<=9;j++)

d[i][j]=a[i][j];

}

for(k=1;k<=9;k++)

{

for(i=1;i<=9;i++)

{

for(j=1;j<=9;j++)

if(d[i][k]+d[k][j]<d[i][j])

{

d[i][j]=d[i][k]+d[k][j];

R[i][j]=k;

}

}

}

int n,m;

scanf("%d%d",&n,&m);

printf("%lf\n",d[n][m]);

printf("%d",n);

Print(n,m);

return 0;

}

  • 上一篇:分銷渠道、渠道設計和管理的誤區
  • 下一篇:翻譯壹段文字
  • copyright 2024編程學習大全網