动态规划

动态规划是一种算法思路,动态规划的核心思想是是利用存储的历史信息,使得未来需要的信息不再需要进行重复计算,从而实现降低时间复杂度,用空间复杂度来换取时间复杂度。

动态规划一般可分为以下几步:

  1. 确定递推量。确定递推过程中要保留的历史信息数量和具体含义,同时,也会定下动态规划的维度。
  2. 推导递推式。根据确定的递推量,得到如何利用存储的历史信息在有效时间(线性时间)内得到当前的信息结果
  3. 计算初始条件。有了递推式之后,我们只需要计算初始条件,然后根据递推式得到我们想要的结果。通常来说,初始条件都比较简单,一般都可直接赋值。
  4. 继续优化存储历史信息的空间维度。基于算法优化的考虑,一般来说,几维动态规划,我们用几维的存储空间是肯定可以实现的。但是,有时我们对于历史信息的要求不高,比如这一步只需要用到上一步的历史信息,而不需要更早的了,那么我们可以只存储每一步的历史信息,每步覆盖上一步的信息,这样便可以少一维的空间,从而优化算法的空间复杂度。

常见的记录历史信息方法:

  1. 使用固定值
  2. 使用一维数组
  3. 使用二维数组,很多问题看似很麻烦,但是用二维数组描述一下,可能就会豁然开朗
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值