Leetcode 198. House Robber
強盜搶劫問題,首先依題目規定,一旦搶了i就不能搶i+1的房子了。 因此我們釐清一下,如何看到題目就知道要用DP去解呢? DP又分為top-down和bottom-up, top-down顧名思義就是從大問題到小問題,bottom-up是從小問題到大問題,DP加入memorization的機制。 top-down通常是用遞迴觀念去看。bottom-up通常用陣列(or vector)去記憶初始的問題,再從小問題逐步和成大問題。 因此,題目可以這麼看。設i為index。rob[i]為最佳解。以ex. 2為例: rob[0] = 只有一間房子,故得最佳解,即2。 rob[1] = 從[2,7]當中挑出的最佳解,即7。 此時,要思考怎麼得出rob[2]呢? rob[2] 先直接從肉眼看出[2,7,9] = 11,它等同於rob[2] = max(rob[2-1], 當前第i房子+ rob[2-2]) rob[i] = max(rob[i-1], 當前房子 + rob[i-2])