动态规划,Dynamic Programming
,即DP
。一般DP问题都可分解成很多相同性质的子问题(subproblem),因此DP问题与递归密切相关,但代码不一定非要写成递归的!
DP问题特有的味道:
递归会显著增加栈空间,这是限制递归算法应用的重要原因之一。另外,递归会增加很多函数调用overhead,因此递归实现不一定快!
分析解决DP问题的关键:分析和识别出子问题,计算并保存子问题的结果,在后续计算中,直接使用前面计算出来的子问题的结果,避免重复计算!有些问题虽然可以使用DP思路,但是DP方案不一定是最快的,比如LeetCode第5题,寻找最长回文,而且DP方案由于需要存储大量子问题的结果,一般都比较费内存,还要考虑如何存储才能支持快速查找!
-- 目录[0] --
-- 文章[7] --