入門House Robber

House Robber

(1) 先從 Top-Down 的角度來想,如果我們定義 maxProfit(n) 爲長度爲 n 的 array 中所能得到的最大利益的話,不難看出在計算 maxProfit(n) 的時候,它的值和前兩個 subproblem 相關,即 maxProfit(n - 1) 和 maxProfit(n - 2).  關鍵是找到這個!!

由此我們發現了 DP 的第一個性質: overlap subproblems.(即states)

(2)optimal substructure相當於transition function。同時如果 maxProfit(n - 1) 和 maxProfit(n - 2) 都是其對應子問題的最優解的話,我們可以只利用這兩個子問題的 solution,加上對當前元素的判斷,構造出 maxProfit(n) 的最優解。

因此我們滿足了 DP 的正確性性質: optimal substructure. (即states之間的關聯)

(3) 空間的優化: index % n

因爲每一個 size = index 的問題只和前面的 n 個子問題相關,只用存儲n個狀態即可。

(4) 爲什麼要有初始定義?因爲不滿足遞推公式,帶入會出現溢出


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章