公告歡迎來到 Larry's notes,近期會持續整理網站。
※ LeetCode, UVa 與 YZUCSE 系列相關文章已從首頁的文章列表中移除。可從首頁的釘選分類瀏覽。
※ LeetCode, UVa 與 YZUCSE 系列相關文章已從首頁的文章列表中移除。可從首頁的釘選分類瀏覽。
UVa - 10337 解題紀錄
題目: UVa - 10337 - Flight Planner
題目說明
在一個平面座標系上,有一架飛機從原點 ( 0, 0 ) 起飛,要到 X ( X, 0 ),將原點到 X 每 100 miles 分為一段,給每段的各個空層 ( 共 9 層 ) 的風速,飛機每飛過 100 miles 可以選擇往上一層、往下一層、或是平飛,花費的燃料依序為 60、20、30,且花費的燃料還要減掉該層的風速,求從起點到終點花費的最少燃料為何。飛機不能在地面平飛 ( 第 0 層 ),也不能飛超過第 9 層。
Input: 第一個整數 T,表示有 T 組測資,每組測資第一個整數為 X,後面 9 * X / 100 的表格為風速,以左下角為原點,向右為 x 軸 ( 0 ~ X / 100 ),向上為 y 軸 ( 0 ~ 9 )。
Output: 輸出從起點到終點的最小花費燃料。
解題思路
動態規劃題,先讀取測資,將每 100 miles 分為一段,winds[i][j] 表第 i 段,第 j 層的風速,先讀取風速,記得是從第 9 層開始。
定義 dp[i][j] 表飛機到達第 i 段,第 j 層所需的最小花費,對於 (i, j) 來說,只能從 (i - 1, j)、(i - 1, j - 1)、(i - 1, j + 1) 到達,依此想法做動態規劃即可,記得注意題目要求的一些限制,如不能在第 0 層走等等。
參考解法
1 |
|
參考資料
本部落格所有文章除特別聲明外,均採用 CC BY-NC-SA 4.0 許可協議。轉載請註明來自 Larry's notes!
評論