CH6_6.C
上传用户:lgb298
上传日期:2013-03-22
资源大小:1025k
文件大小:1k
源码类别:

软件工程

开发平台:

C/C++

  1. #include <stdio.h>
  2. #define M 10
  3. #define MAX 100
  4. void shortpath_FLOYD(int cost[][M],int path[][M],int length[][M],int n)
  5. {  int i,j,k,wm;
  6.    for(i=0;i<n;i++)
  7.      for(j=0;j<n;j++)
  8.      {  length[i][j]=cost[i][j];
  9.         if(i==j) path[i][j]=0;
  10.         else if(length[i][j]<MAX)
  11.             path[i][j]=i+1;
  12.         else  path[i][j]=0;
  13.      }
  14.    for(k=0;k<n;k++)
  15.      for(i=0;i<n;i++)
  16.        for(j=0;j<n;j++)
  17.          if(length[i][k]+length[k][j]<length[i][j])
  18.          {  length[i][j]=length[i][k]+length[k][j];
  19.             path[i][j]=path[k][j];
  20.          }
  21. }
  22. void main()
  23. {
  24.    int i,j,n=3;
  25.    static int cost[][M]={{0,4  ,11},
  26.  {6,0  ,2},
  27.  {3,MAX,0}};
  28.    static int path[M][M],length[M][M];
  29.    shortpath_FLOYD(cost,path,length,n);
  30.      for(i=0;i<n;i++)
  31.     {  for(j=0;j<n;j++)
  32.  printf("%-6d",length[i][j]);
  33.        printf("n");
  34.     }
  35.     printf("n");
  36.     for(i=0;i<n;i++)
  37.     {  for(j=0;j<n;j++)
  38.  printf("%-6d",path[i][j]);
  39.        printf("n");
  40.     }
  41. }