码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 弗洛伊德算法(C++)


    目录

    介绍: 

    代码: 

    结果: 

    介绍: 

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

    代码: 

    1. #include//弗洛伊德算法
    2. using namespace std;
    3. int G[100][100],D[100][100],Path[100][100];
    4. int n, t, maxlen=999;
    5. void Floyd()
    6. {
    7. for (int i = 0; i < n; i++)//初始化最短路径和前驱
    8. for(int j=0; j
    9. {
    10. D[i][j] = G[i][j];
    11. if (D[i][j] < maxlen && i != j)//i和j之间有弧,前驱设为i
    12. Path[i][j] = i;
    13. else//i和j之间无弧,前驱设为-1
    14. Path[i][j] = -1;
    15. }
    16. for(int k=0;k
    17. for(int i=0;i
    18. for (int j = 0; j < n; j++)
    19. {
    20. if (D[i][k] + D[k][j] < D[i][j])//i到j经过k点有更短路径
    21. {
    22. D[i][j] = D[i][k] + D[k][j];//更新D[i][j]
    23. Path[i][j] = Path[k][j];//更改前驱
    24. }
    25. }
    26. for (int i = 1; i < n; i++)//访问从0点到各点的最短距离
    27. {
    28. cout << "0点到" << i << "的最短路径权值为:" << D[0][i] << " ";
    29. cout << "路径为:";
    30. int a = Path[0][i];
    31. cout << i<< " ";
    32. while (a != 0)
    33. {
    34. cout << a << " ";
    35. a = Path[0][a];
    36. }
    37. cout << endl;
    38. }
    39. }
    40. int main()
    41. {
    42. cout << "输入顶点数:" << endl;
    43. cin >> n;
    44. for (int i = 0; i < n; i++)
    45. for (int j = 0; j < n; j++)
    46. G[i][j] = maxlen;
    47. cout << "输入边数:" << endl;
    48. cin >> t;
    49. for (int i = 0; i < t; i++)
    50. {
    51. int v1, v2, w;
    52. cin >> v1 >> v2 >> w;
    53. G[v1][v2] = w;
    54. }
    55. Floyd();
    56. }

    结果: 

  • 相关阅读:
    3、Linux下安装
    【S2021010基于python的物品的协同过滤算法图书推荐系统-哔哩哔哩】 https://b23.tv/NyecCaQ
    k8s 服务升级为啥 pod 会部署到我们不期望的节点上??看来你还不懂污点和容忍度
    已安装的nginx追加ssl模块
    element-ui中el-table数据合并行和列,应该怎么解决
    Excel·VBA日期时间转换提取正则表达式函数
    【前端修炼场】 — 这些标签你学会了么?快速拿下 “hr”
    【RS采样】A Gain-Tuning Dynamic Negative Sampler for Recommendation (WWW 2022)
    QT tableview 实现千万数据加载,内存消耗小
    这是什么代码帮我看看
  • 原文地址:https://blog.csdn.net/qq_74156152/article/details/134496531
  • 最新文章
  • 【JVM】编译执行与解释执行的区别是什么?JVM 使用哪种方式?
    用 Hashids 优雅解决 C 端自增 ID 暴露问题
    V8引擎 精品漫游指南--Ignition篇(上) 指令 栈帧 槽位 调用约定 内存布局 基础内容
    LLVM Pass快速入门(四):代码插桩
    milkup:桌面端 markdown AI续写和即时渲染
    基于项目工程构建SBOM(软件物料清单)的研究
    鸿蒙应用开发UI基础第二节:鸿蒙应用程序框架核心解析与实操
    .NET 中如何快速实现 List 集合去重?
    扣子Coze实战:从0到1打造抖音+小红书热点监控智能体
    浅谈数据访问层
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
小工具 小游戏
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1

京公网安备 11010502049817号