DP问题常用来解决最优解能由子最优解构成的问题。
核心问题就是我是谁,我从哪里来,我到哪里去。
我是谁
就是代表现在的状态
我从哪里来,到哪里去就代表了状态转移方程。
很容易和平时的观点理解冲突的一点就是无后效性。
Leetcode198题非常非常好的诠释了什么叫做动态规划。
题中,作为一个小偷,我们每一步都要做抉择,做关键的问题就是状态转移方程的写法。
____ ____ ____ 房子 ____ ____
我们挨家挨户的去偷啊,从第一个房子起,作为一个不太聪明的小偷可能看到第一家就偷了,但是他忘了一茬,如果我们偷的这家房子的钱是100块钱,而下一家是1000块钱,下下家是50块钱,那我们当然选择不偷啊。所以我们看着一家房子能不能偷,还要看他后两家,但是如果总是选择不偷,那岂不是傻眼了。所以要时时刻刻做出当前的最正确的决定。
我们的目标是求能偷的最大金额,那么由于警报的作用,DP方程如下所示。
dp[i] = max[dp[i-2]+f(i),dp[i-1]]
网友评论