欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

动态规划——所有点对的最短路径问题

程序员文章站 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");
	}
}