弗洛伊德算法(C++)

目录

介绍: 

代码: 

结果: 

介绍: 

弗洛伊德算法(Floyd algorithm)也称为Floyd-Warshall算法,是一种用于求解所有节点对之间的最短路径的动态规划算法。它使用了一个二维数组来存储所有节点之间的最短距离,该数组的初始值为节点之间的直接距离或无穷大。然后,算法对数组进行多次迭代,每次迭代都尝试通过一个中间节点更新节点之间的距离值,直到所有节点之间的最短距离被计算出来。该算法的时间复杂度为O(n^3),适用于有向图或无向图,但不能处理带有负权边的图。

弗洛伊德算法(C++)_第1张图片

代码: 

#include//弗洛伊德算法
using namespace std;
int G[100][100],D[100][100],Path[100][100];
int n, t, maxlen=999;
void Floyd()
{
	for (int i = 0; i < n; i++)//初始化最短路径和前驱
		for(int j=0; j> n;
	for (int i = 0; i < n; i++)
		for (int j = 0; j < n; j++)
			G[i][j] = maxlen;
	cout << "输入边数:" << endl;
	cin >> t;
	for (int i = 0; i < t; i++)
	{
		int v1, v2, w;
		cin >> v1 >> v2 >> w;
		G[v1][v2] = w;
	}
	Floyd();
}

结果: 

弗洛伊德算法(C++)_第2张图片

你可能感兴趣的:(算法,c++,开发语言)