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) 的最優解。