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](当前元素)之间的关系是怎么样的?其实也是从业务角度去理解的