Leetcode 198. House Robber
因此我們釐清一下,如何看到題目就知道要用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])
留言
張貼留言