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

门业东莞网站建设技术支持网站建设分析案例

门业东莞网站建设技术支持,网站建设分析案例,平面设计找工作难吗,手机端网站如何优化题目 leetcode787. K 站中转内最便宜的航班 题目分析 给定一个城市图,每个城市通过航班与其他城市相连。每个航班都有一个起点、终点和价格。你需要找到从起点城市 src 到终点城市 dst 的最便宜路径,但这条路径最多只能经过 k 个中转站。你需要返回这…

题目

leetcode787. K 站中转内最便宜的航班

题目分析

给定一个城市图,每个城市通过航班与其他城市相连。每个航班都有一个起点、终点和价格。你需要找到从起点城市 src 到终点城市 dst 的最便宜路径,但这条路径最多只能经过 k 个中转站。你需要返回这种路径的最低价格,如果不存在这样的路径,则返回 -1。

输入:

n:城市的数量
flights:航班的列表,每个航班用 [fromi, toi, pricei] 表示,表示从城市 fromi 到城市 toi 的航班价格为 pricei
src:起点城市
dst:终点城市
k:最多经过的中转站数

输出:

最便宜的价格,如果没有满足条件的路径,则输出 -1

思路分析

我看到这道题第一时间想的就是dijkstra算法,因为我也不会别的算法。
对于k的限制,我想到可以在优先队列中维护一个当前层级的变量,当到达的层级大于k时,就不再扩展了。

但是我没考虑到k的限制可能会导致最短路径无法达成,并且由于dijkstra算法的性质,其他路线也被直接丢弃了

于是我尝试不使用visited数组记录访问过的节点,将每个节点的后继节点都加入队列中,只有层级大于k时,才会跳过。此时算法退化成了变体的广度优先搜索算法,会搜索每一条在中转数在k内的路径。

但是,当数据量大了之后,显然这个算法会超时。

继续思考,发现dijkstra算法找到的是最优路径,但是其中转节点可能很多,而真正的路径只可能在中转节点比最优路径少的路径里,其他中转节点多于最优路径的路径完全可以剪枝,因为他们的费用不可能更低。

按照这个思路,只需要维护一个每个节点的最小中转数,任何多于最小中转数的路径都可以剪枝,因为对于每一个被剪枝的路径来说,在其之前都已经有至少一条路径价格比它低的同时中转数还要小于它

代码

class Solution:def findCheapestPrice(self, n: int, flights: List[List[int]], src: int, dst: int, k: int) -> int:# 建立邻接表maps=[[]  for _ in range(n)]for edge in flights:maps[edge[0]].append(edge[1:])#最小堆模拟优先队列,(价格,节点编号,层级)pq=[(0,src,0)]#当前每个节点的中转数记录visit=[n+1]*nwhile pq:w,p,c=heappop(pq)#过滤超过层级k的节点,剪枝中转城市多余当前节点记录的点if c>=visit[p] or c>k+1:continueif  p == dst:return w# 直接等就可以,比它大的到不了这一步visit[p]=c# 将后继节点加入优先队列for point in maps[p]:heappush(pq,(w + point[1],point[0],c+1))return  -1

提交

一直交刷成绩QAQ
在这里插入图片描述


2024/8/8

http://www.yayakq.cn/news/90796/

相关文章:

  • 网站备案网站前置审批免费素材视频网站
  • ps临摹网站php网站方案
  • 网站推广营销应该怎么做wordpress图片专辑
  • 网站建设 镇江万达前端面试
  • 怎么做购物车网站南宁建企业网站
  • 网站常用图片苍南县规划建设局网站
  • 论坛购物网站开发我先做个网站怎么做
  • 网站如何做触屏滑动效果毕节做网站
  • 设计工作网站怎么把网站黑掉
  • 做网站时无法上传图片可以看那种东西的浏览器
  • 网站建设老李教学网站网站会员注册系统源码
  • 有了实名制域名怎么做网站开发公司支付给业主的购房补贴
  • 营销型网站建设供货商高性能网站建设指南pdf
  • 阿里云自助建站模板免费网站制作器
  • 网站建设前期调研公司汇报刚刚大连发生了大事
  • 企业建设网站的预期收益企业网站怎么做的好看
  • 长沙有哪些网站建设公司好做网站需要提供的资料
  • 如何做网站路径分析网站建设技术合同模板
  • 成都p2p网站建设建设网站需要造价
  • 网站模板文件在哪里下载wordpress前端工具箱
  • 云建站微网站网站添加微信
  • 嘉兴网站开发学校大同建设银行保安招聘网站
  • 站点推广促销高端女装品牌前十名
  • 营销型网站建设公司易网拓医疗网站建设 中企动力
  • 一般做门户网站多少钱wordpress 注册功能
  • 制作网页的网站有哪些佛山做外贸网站
  • 站长之家排行榜论坛搭建 wordpress
  • 山东企业网站建设费用现在做网站一般多少钱
  • 网站建设伍首选金手指校园网站建设情况统计表
  • 企业网站优化17wordpress 档案插件