动态规划(Dynamic Programming)

动态规划,Dynamic Programming,即DP。一般DP问题都可分解成很多相同性质的子问题(subproblem),因此DP问题与递归密切相关,但代码不一定非要写成递归的!

DP问题特有的味道:

递归会显著增加栈空间,这是限制递归算法应用的重要原因之一。另外,递归会增加很多函数调用overhead,因此递归实现不一定快!

分析解决DP问题的关键:分析和识别出子问题,计算并保存子问题的结果,在后续计算中,直接使用前面计算出来的子问题的结果,避免重复计算!有些问题虽然可以使用DP思路,但是DP方案不一定是最快的,比如LeetCode第5题,寻找最长回文,而且DP方案由于需要存储大量子问题的结果,一般都比较费内存,还要考虑如何存储才能支持快速查找!

-- 目录[0] --

-- 文章[7] --