动态规划

动态规划

无论是动态规划还是递归,都有两个关键点:【状态】+【选择】

1.动态规划--自顶向下

动态规划无非就是利用【历史记录】避免重复计算。那就使用一个备忘录嘛,在递归的时候如果相关记录存在就直接返回, 不用重复计算。

递归思路:递归的技巧就是管好当下(有哪些【选择】),之后的事情抛给递归【状态也发生了变化】

  • 明确函数功能:确定可以递归解决的问题

  • 找递归式:每次递归,问题的规模应该减小

  • 出口:找到临界条件

综述:就是在递归的基础之上增加了一个备忘录容器对象

# python的functools模块提供了一个lru_cache装饰器,是缓存指定次数的装饰器

@lru_cache()

def func(x):

if(x<=1):

return 1

return func(x-1)+func(x-2)
private HashMap<String,Integer> memo=new HashMap<>();

public Integer func(int x){

if xxx in memo:

return xxx;

func(x-1) ...

}

2.动态规划之---自底向上

动态规划无非就是利用【历史记录】避免重复计算。自底向上采用的是循环的方式,将历史记录

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值