一、什么是动态规划五步曲
确定dp数组(dp table)以及下标的含义
确定递推公式
dp数组如何初始化
确定遍历顺序
举例推导dp数组
二、 个人赏析
这是我从某网站上看到的关于动态规划的教学系列。作为应试来说,这个 提纲确实不错,能让应试者掌握基础题目的解法,可是遇到一些拓展题目了,这五步曲的第一步能走通吗?
归根结底,第一步确定dp数组以及下标的含义,怎么确定?
(1)根据记忆搜索
(2)根据题目性质推敲
根据记忆搜索就是回想以前用过的dp数组的含义,看能否套在这个题目上,这是一种遍历已知方法的方式。只能解决有限种dp问题。
第二种,根据题目性质推导。怎么推导?这才是动态规划的难点所在。要深刻理解动态规划的含义:交叠子问题可以重复利用。
将问题拆解为几个问题求解,这几个小问题在求解过程中,又利用到了重复求解的答案(比如问题A拆分成BDC,而B用到D、C,那么我们可以存储DC的答案)。利用空间换时间的特性,开辟数组存储子问题的答案而不必重复求解,这才是动态规划的精髓所在。