当前位置: 首页 > news >正文

弗洛伊德算法(C++)

目录

介绍: 

代码: 

结果: 

介绍: 

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

代码: 

#include<iostream>//弗洛伊德算法
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; j++){D[i][j] = G[i][j];if (D[i][j] < maxlen && i != j)//i和j之间有弧,前驱设为iPath[i][j] = i;else//i和j之间无弧,前驱设为-1Path[i][j] = -1;}for(int k=0;k<n;k++)for(int i=0;i<n;i++)for (int j = 0; j < n; j++){if (D[i][k] + D[k][j] < D[i][j])//i到j经过k点有更短路径{D[i][j] = D[i][k] + D[k][j];//更新D[i][j]Path[i][j] = Path[k][j];//更改前驱}}for (int i = 1; i < n; i++)//访问从0点到各点的最短距离{cout << "0点到" << i << "的最短路径权值为:" << D[0][i] << " ";cout << "路径为:";int a = Path[0][i];cout << i<< " ";while (a != 0){cout << a << " ";a = Path[0][a];}cout << endl;}
}
int main()
{cout << "输入顶点数:" << endl;cin >> 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();
}

结果: 

http://www.lryc.cn/news/238573.html

相关文章:

  • 相对定位、绝对定位、固定定位、绝对定位堆叠顺序
  • px4+vio实现无人机室内定位
  • 享元模式 rust和java的实现
  • XmlElement注解在Java的数组属性上,以产生多个相同的XML元素
  • SQLServer 数字加千分位 用FORMAT函数强转不管多大位数
  • 说说mvc和mvvm的区别和联系
  • linux rsyslog综合实战2
  • AcWing 4. 多重背包问题 I 学习笔记
  • 解决selenium使用chrome下载文件(如pdf)时,反而打开浏览器的预览界面
  • 2024年山东省职业院校技能大赛中职组“网络安全”赛项竞赛试题-C
  • 基于Python实现用于实时监控和分析 MySQL 服务器的性能指标和相关信息工具源码
  • Android 10-13鼠标右键返回功能适配
  • 51单片机/STM32F103/STM32F407学习1_点亮LED灯
  • (Transfer Learning)迁移学习在IMDB上训练情感分析模型
  • 蓝桥杯每日一题2023.11.20
  • 【迅搜02】究竟什么是搜索引擎?正式介绍XunSearch
  • 【Sql】sql server还原数据库的时候,提示:因为数据库正在使用,所以无法获得对数据库的独占访问权。
  • 【Go语言实战】(26) 分布式搜索引擎
  • 【理解ARM架构】不同方式点灯 | ARM架构简介 | 常见汇编指令 | C与汇编
  • JS服务端技术—Node.js知识点锦集
  • 界面控件DevExpress WPF流程图组件,完美复制Visio UI!(一)
  • 为什么选择B+树作为数据库索引结构?
  • 什么是神经网络(Neural Network,NN)
  • 15 Go的并发
  • 管理体系标准
  • 【Java 进阶篇】揭秘 Jackson:Java 对象转 JSON 注解的魔法
  • ②【Hash】Redis常用数据类型:Hash [使用手册]
  • 十七、SpringAMQP
  • Java虚拟机(JVM)的调优技巧和实战
  • idea中的sout、psvm快捷键输入,不要太好用了