动态规划——所有点对的最短路径问题
程序员文章站
2022-07-12 20:51:50
...
截图里面介绍的很详细
根据伪代码写的C代码:
#include <stdio.h>
#define M 4
#define MAX 999999
int D[M][M]={0};
void FLOYD(int l[][M]);
int main(void)
{
int l[M][M]={0,1,MAX,2,2,0,MAX,2,MAX,9,0,4,8,2,3,0};
FLOYD(l);
return 0;
}
void FLOYD(int l[][M])
{
int i=0,j=0,k=0;
for(i=0;i<M;i++)
{
for(j=0;j<M;j++)
{
D[i][j] = l[i][j];
}
}
for(i=0;i<M;i++)
{
for(j=0;j<M;j++)
{
for(k=0;k<M;k++)
{
D[j][k] = D[j][k]<(D[j][i]+D[i][k])?D[j][k]:(D[j][i]+D[i][k]);
}
}
}
for(i=0;i<M;i++)
{
for(j=0;j<M;j++)
{
printf("%d ",D[i][j]);
}
printf("\n");
}
}
上一篇: 前端学数据库之Mysql函数