日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

【缺迪杰斯特拉和SPFA] 文巾解题 787. K 站中转内最便宜的航班

發布時間:2025/4/5 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【缺迪杰斯特拉和SPFA] 文巾解题 787. K 站中转内最便宜的航班 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1 題目描述

2 解題思路?

2.1 動態規劃

我們記dp[i][k]表示最后一個點是k,且從src已經經過了step條邊時候的距離。

那么我們最終的目標是要找到最小的dp[i][dst](i∈[1,k+1])

每一次的轉移方程為 dp[i][dst]=min(dp[i-1][src]+len([src,dst])

于是我們使用動態規劃,有:

class Solution:def findCheapestPrice(self, n: int, flights: List[List[int]], src: int, dst: int, k: int) -> int:INF = 10 **9dp = [[INF for _ in range(n)] for _ in range(k + 2)]dp[0][src] = 0 #所有的初始值都是無窮大,除了起始點src(因為距離src0條邊距離的只有自己)for step in range(1, k + 2):for x, y, cost in flights:dp[step][y] = min(dp[step][y], dp[step - 1][x] + cost)#每一個step相當于更新 距離src更遠一階的鄰居的dp信息res = INFfor step in range(1, k + 2):res = min(res, dp[step][dst])#找終點中最小的dp值if(res==INF):return -1else:return res

?2.2 動態規劃進階版

我們在看一遍2.1,不難發現動態規劃中的dp[i][...]只有在更新dp[i+1][....]的時候會用到,因此,我們只需要兩個一維的dp數組就可以完成2.1的操作

class Solution:def findCheapestPrice(self, n: int, flights: List[List[int]], src: int, dst: int, k: int) -> int:INF = 10 **9res=INFdp = [INF for _ in range(n)] dp[src] = 0 #相同的賦值方式for step in range(1, k + 2):dp2 = [INF for _ in range(n)] for x, y, cost in flights:dp2[y] = min(dp2[y], dp[x] + cost) #在這里dp2相當于當前step的dp,dp相當于上一個step的dpdp=dp2res=min(res,dp[dst]) #這一個step對應的dp[dst]值是否可以更新結果值if(res==INF):return -1else:return res

?

2.3 BFS?

????????BFS可以做,就是需要在很多地方進行剪枝

????????設立一個隊列,里面的每一個元素是一個三元組:當前起始點,還剩下幾條邊可以走,從最初起始點到當前起始點之間的距離。

? ? ? ? 每一次從隊列中彈出一個元素(origin,num,dis),先判斷還能不能繼續去下一個節點dst,如果能得話,將(dst,num-1,dis+len([origin,dst]))入隊列;如果下一個節點就是終點的話,就判斷是否要更新結果那個最小值

class Solution:def findCheapestPrice(self, n: int, flights: List[List[int]], src: int, dst: int, k: int) -> int:dit=dict()for i in range(n):dit[i]=[]for i in flights:tmp=i[0]dit[i[0]].append([i[1],i[2]]) #建立一個字典,字典的key是起始點,value是相鄰點和起點終點之間連邊的長度lst=[[src,k+1,0]]m=10000000dist=[m for _ in range(n)]#dist表明從最初的起點到某一個點之間的最短距離,可以用于剪枝while(lst):a=lst.pop(0)origin=a[0]num=a[1]dis=a[2]x=num-1if(x<0):continue #已經沒有剩余邊了,剪枝if(dis>dist[origin]):continue #從最初的原點到當前點的距離 比目前從最初的原點到當前點的最短距離長,剪枝dist[origin]=dis #更新從最初的原點到當前點的距離for i in dit[origin]:destination=i[0]length=i[1]long=dis+lengthif(destination==dst):m=min(m,long) #到達終點,判斷要不要更新melif(long>m):passelse:lst.append([destination,x,long])if(m==10000000):m=-1return(m)

?

?

總結

以上是生活随笔為你收集整理的【缺迪杰斯特拉和SPFA] 文巾解题 787. K 站中转内最便宜的航班的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 超碰在线c| 色图av | 岛国精品一区二区三区 | 青青草午夜 | 琪琪色在线视频 | www网站在线免费观看 | 1024精品一区二区三区日韩 | 亚洲欧美激情一区二区三区 | 亚洲成人少妇 | 亚洲乱码国产乱码精品天美传媒 | 久草视频这里只有精品 | 99精品视频一区二区三区 | 青青草视频免费观看 | 女人十八毛片嫩草av | 国产精品麻豆视频 | 日本一区二区三区电影在线观看 | 精品久久久久久久免费人妻 | 亚洲看片 | 国产suv一区二区 | 亚洲一本在线观看 | 爽爽影院在线 | 国产真人无遮挡作爱免费视频 | 好吊操av | 亚洲综合一区二区三区 | 伊人伊网| 美女扒开下面让男人捅 | 久久一二三四区 | 国外成人免费视频 | 亚洲特级毛片 | 久久成人人人人精品欧 | 日韩av网页 | 超碰在线看 | 激情婷婷六月 | 国产久操视频 | 国产精品毛片久久久久久 | 黄色免费一级视频 | 亚洲aⅴ | 精品一区不卡 | 欧美一级片在线看 | 麻豆av一区 | 黄色免费入口 | 国产r级在线 | 美女流白浆视频 | 日韩一级精品 | 日本精品在线 | 麻豆国产一区 | 韩国成人在线 | 91精品国产麻豆国产自产在线 | 国产精品久久久久久人 | 精品国产乱码久久久久久久软件 | 亚洲女同一区二区 | 日韩av日韩 | 黄色一级片一级片 | 日本精品久久久 | 国内成人在线 | 精品伦精品一区二区三区视频 | 日本h片在线观看 | 国产精品久久欧美久久一区 | 国产4区| 欧美激情一区二区三区 | 日韩成人精品一区 | 日本东京热一区二区 | 爽爽影院在线 | 久久久久久久久久网站 | av中文在线 | 日韩国产欧美一区二区 | 秘密基地动漫在线观看免费 | 久久久久久免费 | 日韩不卡在线 | 亚洲毛片a | 高清在线一区二区三区 | 成人在线网站 | 亚洲乱码国产乱码精品精软件 | 日本不卡在线视频 | 黄视频在线免费看 | 五月涩| 香蕉视频在线播放 | 欧美一二区视频 | 国产一区二区三区 | 欧美精品免费在线观看 | 一级黄色片国产 | 苏晴忘穿内裤坐公交车被揉到视频 | 欧美一区三区三区高中清蜜桃 | 日本一道本在线 | 亚洲成人福利在线 | 免费av在线播放 | 国产精品久久久爽爽爽麻豆色哟哟 | 日日夜夜免费视频 | 亚洲国产精品久久久 | 欧美日韩一区二区三区在线 | 日韩三级a | 韩国伦理大片 | 国产精品久久久久三级 | 亚洲黄色小说网 | 韩国视频一区二区三区 | 久久色中文字幕 | 手机天堂网 | 激情影音 | 国产又粗又猛又爽又黄的视频在线观看动漫 |