IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 数据结构与算法 -> 蓝桥杯 floyd算法练习 最短路 -> 正文阅读

[数据结构与算法]蓝桥杯 floyd算法练习 最短路

问题描述:

?看这个问题之前可以先看看这个这个up主讲的 很详细😀(有助于对下面核心代码的理解)

求最短路径Floyd算法!_哔哩哔哩_bilibiliicon-default.png?t=M0H8https://www.bilibili.com/video/BV14R4y1x7GB

?问题分析:我的难点就在于数据初始化 由于这是个无向图

那么必有graph[i][j]=graph[j][i]

即临接矩阵对称

然后我是手动输入的= =输了大概快7—8分钟

然后总结了下面几点规律:

对于无向图求最短路径 先把图标上箭头转化为有向图

权值用数字标出

每个地点用数字标出

最后利用对称的性质 大概可以把输入数据的时间缩小到5分钟左右

再其次就是floyd的算法 三行经典代码 今天算是体会到了


datas=[
    [0,0,0],
    [0,1,2],
    [0,2,1],
    [0,3,1],
    [0,4,1],
    [1,1,0],
    [1,0,2],
    [1,6,1],
    [1,9,2],
    [2,2,0],
    [2,0,1],
    [2,3,3],
    [2,5,3],
    [2,6,3],
    [3,3,0],
    [3,0,1],
    [3,4,1],
    [3,8,2],
    [3,6,2],
    [4,4,0],
    [4,0,1],
    [4,3,1],
    [4,7,1],
    [4,8,3],
    [5,5,0],
    [5,2,3],
    [5,6,1],
    [5,9,1],
    [6,6,0],
    [6,1,1],
    [6,2,3],
    [6,3,2],
    [6,10,2],
    [6,8,2],
    [6,5,1],
    [7,7,0],
    [7,3,1],
    [7,4,1],
    [7,8,1],
    [7,11,2],
    [8,8,0],
    [8,3,2],
    [8,4,3],
    [8,12,3],
    [8,7,1],
    [9,9,0],
    [9,1,2],
    [9,5,1],
    [9,18,2],
    [10,10,0],
    [10,6,2],
    [10,11,3],
    [10,13,1],
    [10,15,2],
    [11,11,0],
    [11,10,3],
    [11,7,2],
    [11,12,1],
    [11,17,1],
    [12,12,0],
    [12,8,3],
    [12,11,1],
    [12,13,2],
    [12,10,1],
    [12,18,1],
    [13,13,0],
    [13,10,1],
    [13,12,2],
    [13,15,1],
    [14,14,0],
    [14,16,1],
    [14,15,1],
    [14,17,3],
    [15,15,0],
    [15,14,1],
    [15,10,2],
    [15,13,1],
    [16,16,0],
    [16,12,1],
    [16,14,1],
    [17,17,0],
    [17,11,1],
    [17,14,3],
    [17,18,1],
    [18,18,0],
    [18,17,1],
    [18,9,2],
    [18,12,1]
]
graph=[[float('inf')]*19 for i in range(19)]
for u,v,c in datas:
    graph[u][v]=c
for k in range(19):#以k为中转站
    for i in range(19):
        for j in range(19):
            graph[i][j]=min(graph[i][j],graph[i][k]+graph[k][j])
print(graph[0][18])

这是我一开始的做法,比较笨 比如输入了[11,12,1],实际上[12,11,1]就不用在输入了

我们只需要在最外层循环补上graph[v][u]=c即可 答案是6

????????????????题目链接最短路传送门

特别感谢以下这位博主的讲解 强推!?很适合和小郑一样刚入门的去看 真的很OK!
floyd算法(多源最短路径) python实现_Aiven-CSDN博客_floyd算法python代码https://blog.csdn.net/AivenZhong/article/details/93770197?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522164387396216780261917064%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=164387396216780261917064&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduend~default-2-93770197.first_rank_v2_pc_rank_v29&utm_term=floyd%E7%AE%97%E6%B3%95+python&spm=1018.2226.3001.4187

  数据结构与算法 最新文章
【力扣106】 从中序与后续遍历序列构造二叉
leetcode 322 零钱兑换
哈希的应用:海量数据处理
动态规划|最短Hamilton路径
华为机试_HJ41 称砝码【中等】【menset】【
【C与数据结构】——寒假提高每日练习Day1
基础算法——堆排序
2023王道数据结构线性表--单链表课后习题部
LeetCode 之 反转链表的一部分
【题解】lintcode必刷50题<有效的括号序列
上一篇文章      下一篇文章      查看所有文章
加:2022-02-04 11:17:09  更:2022-02-04 11:17:18 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 17:30:30-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码