LeetCode 53-最大子序列问题

1. 穷举框架

穷举框架的思路是:

for 状态1 in 状态1的所有取值:
    for 状态2 in 状态2的所有取值:
        for ...
            dp[状态1][状态2][...] = 择优(选择1,选择2...)

这个题目的 “状态” 是一维的,在数组中的数据循环。“选择” 是两种:放入、不放入。穷举框架是很容易理解的,困难的是状态转移框架,怎么写出正确的状态转移才是最大的问题的。

2. 状态转移框架

解释就是

dp[i]=Math.max(num[i], dp[i-1]+num[i])

dp [] 定义一个一维数组,将每次的动态转移过程记录下来,这个可以看作是基本的问题的。

dp [i] 与 dp [i-1] 与 num [i](当前元素)之间的关系是怎么样的?其实也是从业务角度去理解的