01背包,完全背包的区别

文字上的理解:
**01背包:**物品只能取一次。
**完全背包:**物品不限次。
代码上:
设:
n个物品,每个占t[i]空间,p[i]个价值,共有m容量。
01背包核心代码:

for(int i=1;i<=n;i++){
            for(int t1=m;t1>=t[i];t1--){
                f[t1]=max(f[t1],f[t1-t[i]]+p[i]);

完全背包核心代码:

 for(int i=1;i<=n;i++){
            for(int t1=t[i];t1<=m;t1++){//注意这一行
                f[t1]=max(f[t1],f[t1-t[i]]+p[i]);

总结:
这说明了完全背包和01背包的差别只有第二重for循环的差别。

在01背包中,t1从m一直减到t【i】,保证了每个物品在一个t1中只会被放一次。
而完全背包中,从t1一直加到m,使在可以放下的情况下尽量多地放。
🆗

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值