Algorithms: DP

思路

暴力搜索(递归)

首先不要对递归心存偏见,虽然其在dp问题上时间复杂度很高,但是代码简洁,容易理解,递归方式在很多场合都是有大量应用的,不啻为一个“短小精悍”的工具,比如对于二叉树结构相关问题中。即使对于dp问题,如果能写出递归式,再将其优化成经典的dp也不难。

记忆化搜索

暴力递归中涉及大量的重复计算,记忆化搜索就是将递归计算的状态存储起来,遇到计算过的状态直接返回即可,“以空间换时间”。记忆化搜索就是递归版的动态规划。

经典DP

状态转移方程,其实就是中学学的递推公式。找出这个是解决dp问题的关键,前面已经提到的递归式和递推式殊途同归,这有赖于对问题的理解、抽象和建模,有时需要适当转换一下思路,思维开阔些,keep smart !

典型DP问题

斐波那契数列
跳台阶问题(同fib)
01背包
完全背包
找零钱
最大子数组的和

参考链接:
https://blog.stormma.me/2017/11/11/%E4%B8%80%E9%81%93%E9%A2%98%E7%9C%8B%E6%B8%85%E5%8A%A8%E6%80%81%E8%A7%84%E5%88%92%E7%9A%84%E5%89%8D%E4%B8%96%E4%BB%8A%E7%94%9F-%E4%B8%80/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值