码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 算法基础——求每对结点之间的最短路径


    这个问题是很简单的我们之前有一个算法是贪心法求解最短路径问题也就是迪杰斯特拉算法。我们当然可以采用那个方式来求解但是那样实在是太复杂了。这里提出用动态规划的方式来求解这个问题。代码非常简洁。

    先看伪代码部分看完应该就理解的差不多了

    首先就是我们需要把图的邻接矩阵cost赋值到A这个矩阵里面随后我们最关键的是那个求min的部分。我们是进行了三次循环下面两次循环好理解一点因为这个是矩阵也就是二维数组所以下面肯定是会有两个循环的。最上面k那个循环其实想表达的意思是因为图中肯定会存在有部分点是需要通过中间结点来到达目的结点的所以K也就是表达的是中间结点。

    接下来看一个例子

    有向图如图所示,求图中所有结点之间最短路径的成本矩阵

    求解代码如下:

    #include
    int min(int a,int b)
    {
        if(a<=b)
        return a;
        else
        return b;
    }
    int main()
    {
        int n=3;
        int cost[n][n]={{0,4,11},
                               {6,0,2},
                               {n,10000,0}};
        int A[n][n];
        for(int i=0;i     {
            for(int j=0;j         A[i][j]=cost[i][j]; 
         } 
         for(int k=0;k      {
             for(int i=0;i          {
                 for(int j=0;j              {
                     A[i][j]=min(A[i][j],A[i][k]+A[k][j]); 
                 }
             } 
         }
        for(int i=0;i     {
            for(int j=0;j             printf("%d\t",A[i][j]); 
            }
            printf("\n"); 
         } 
    } 

    其实这个代码可以写的更简洁一些,但是为了跟上面的算法趋近于一致所以写的看起来复杂了许多。但是核心代码还是条理很清晰的。

    最终运行结果如图所示: 

     

  • 相关阅读:
    《IP编址与路由:网络层的关键技术》
    [附源码]Java计算机毕业设计SSM电子病历系统
    一文搞懂Java对象内存布局
    Linux内核 6.6版本将遏制NVIDIA驱动的不正当行为
    SAMBA共享工具安装
    26. [Python GUI] PyQt5中拖放详解之拖放动作
    Mac上使用M1或M2芯片的设备安装Node.js时遇到一些问题,比如卡顿或性能问题
    远程linux机器中使用camera
    语音识别翻译怎么做?这些方法值得收藏
    可视化大屏设计模板 | 主题皮肤(报表UI设计)
  • 原文地址:https://blog.csdn.net/m0_53345417/article/details/127821882
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号