emmmmm......滚动数组和0/1背包问题的一些新体会

今天下午上了一节课,讲的是关于dp问题,我觉得这里面有两个点挺吸引我的。

第一个就是当老师讲到了0/1背包问题的时候,说到了一个情况,那就是我们在什么时候采取dp这种方法做比较好

老师给的一个小限定就是

当背包的容量大小远远小于2的n次方(n是物品数量)

这个也不能想象,因为我们知道我们的0/1背包问题的复杂度,就是O(nc),(c是背包的容量)

如果我们的c不能和2的n次方形容一个明显的对比的话,那么我们用dp来做的话其实根本就没有一点点的优势呀。。。。。还不如直接用穷举来做算了。。。。


还有另外一个比较吸引我的点就是老师上课讲到了一个“滚动数组”的概念。

老师讲这个概念的时候是谈到最长公共子序列还有编辑距离的时候谈到的,就是因为我们的状态转移方程,依靠的是我们的当前

例如

dp[i][j]依赖的就是dp[i-1][j]和dp[i][j-1]以及dp[i-1][j-1],所以我们推推推到后面的时候,其实我们已经不太依赖前面的dp数组了,

所以我们可以简简单单的只是设定两个dp一维数组来进行滚动的储存~

我感觉这个思路挺新鲜的~



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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值