最优子结构:大问题的最优解由小问题的最优解推出
无后效性:现在的状态不受他之前的状态的影响
//每次保留现阶段有用的数据,不保留无用的数据
将一个问题变为n个相同的小问题
DP为什么会快?
无论是DP还是暴力,我们的算法都是在可能解空间内,寻找最优解。
暴力做法是枚举所有的可能解,这是最大的可能解空间。
DP是枚举有希望成为答案的解。这个空间比暴力的小得多。
DP自带剪枝
从而我们可以得到DP的核心思想:
尽量缩小可能解空间
(常配合记忆化搜索)
线性dp
dp为线性扩展,由上一维最优值扩展到下一维最优值
背包
u盘
区间dp
枚举断点
或多开一维,a[N][N][2];
0:在区间一端
1:在区间另一端
本区间可由哪段区间推得