APCS 2020-10 實作題第三題
問題連結:
https://zerojudge.tw/ShowProblem?problemid=f314
想法:
先計算第M層任何房間左右移動可獲得的最高經驗值,接著從第M-1層到第1層,
逐次計算任何房間左右移動可獲得的最高經驗值,但須加上該路線終點房間下方房間
可獲得的最高經驗值,算到最上層後選取最大值即為解答。
0 | 5 | -2 | 1 |
13 | -19 | 3 | 1 |
-21 | 17 | -13 | 8 |
0 | -20 | 6 | 19 |
原始陣列 |
首先計算第M層任意房間為起點,可以獲得的最高經驗值,並存在相應位置的DP陣列中
5 | 5 | 25 | 25 |
最高經驗值陣列(DP) |
接著計算第M-1層,此時需要將下方房間的最大值加入考量
如(1,2),(左上角為 (1,1) ),其路線為(2,2)->(2,3)->(2,4)->(3,4)
40 | 40 | 35 | 36 |
29 | 12 | 37 | 34 |
16 | 37 | 20 | 33 |
5 | 5 | 25 | 25 |
最高經驗值陣列(DP) |
得出最後陣列後,輸出第一層出現的最大值
Code: