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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

2022-04-28:有 n 个城市通过一些航班连接。给你一个数组 flights ,其中 flights[i] = [fromi, toi, pricei] ,表示该航班都从城市 fromi 开始,

發布時間:2023/12/8 编程问答 30 豆豆

2022-04-28:有 n 個城市通過一些航班連接。給你一個數組 flights ,其中 flights[i] = [fromi, toi, pricei] ,表示該航班都從城市 fromi 開始,以價格 pricei 抵達 toi。
現在給定所有的城市和航班,以及出發城市 src 和目的地 dst,你的任務是找到出一條最多經過 k 站中轉的路線,使得從 src 到 dst 的 價格最便宜 ,并返回該價格。 如果不存在這樣的路線,則輸出 -1。
輸入:
n = 3, edges = [[0,1,100],[1,2,100],[0,2,500]]
src = 0, dst = 2, k = 1
輸出: 200
力扣787. K 站中轉內最便宜的航班。

答案2022-04-28:

類似于寬度優先遍歷。Bellman Ford算法,可以處理負邊,但不能處理負數環。

代碼用rust編寫。代碼如下:

fn main() {let n: isize = 3;let mut edges: Vec<Vec<isize>> = vec![vec![0, 1, 100], vec![1, 2, 100], vec![0, 2, 500]];let src: isize = 0;let dst: isize = 2;let k: isize = 1;let ans = find_cheapest_price2(n, &mut edges, src, dst, k);println!("ans = {}", ans); }fn find_cheapest_price2(n: isize,flights: &mut Vec<Vec<isize>>,src: isize,dst: isize,k: isize, ) -> isize {let mut cost: Vec<isize> = vec![];for _k in 0..n {cost.push(9223372036854775807);}cost[src as usize] = 0;for _i in 0..=k {let mut next: Vec<isize> = vec![];for j in 0..n {next.push(cost[j as usize]);}for j in 0..flights.len() {if cost[(flights[j as usize][0]) as usize] != 9223372036854775807 {next[(flights[j as usize][1]) as usize] = get_min(next[(flights[j as usize][1]) as usize],cost[(flights[j as usize][0]) as usize] + flights[j as usize][2],);}}cost = next;}if cost[dst as usize] == 9223372036854775807 {-1} else {cost[dst as usize]} }fn get_min(a: isize, b: isize) -> isize {if a < b {a} else {b} }

執行結果如下:


左神java代碼

總結

以上是生活随笔為你收集整理的2022-04-28:有 n 个城市通过一些航班连接。给你一个数组 flights ,其中 flights[i] = [fromi, toi, pricei] ,表示该航班都从城市 fromi 开始,的全部內容,希望文章能夠幫你解決所遇到的問題。

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