背包问题 新手详解

网站☞ 大体思路详解


然后关于里面有些不清楚的内容的补充:

  1. ❤ ❤ ❤ ❤ ❤   01背包   ❤ ❤ ❤ ❤ ❤————f[i][v]=max{f[i-1][v],f[i-1][v-c[i]]+w[i]}
             :) 关于从二维数组变成一维数组,在循环的时候V是逆序的原因:
                    因为在 i 的情况下,f [ ] 是和i - 1 有关的。
                    如果是正序,那么在你求 f [ v ] 的时候,实际上,f [ 0 ].....f [ v - 1] 已经改动过了,是和 i 有关的值了。
                    进一步解释的网站链接☞  01背包具体数据的逆序解释

 
             :) 关于01背包初始化中负无穷的问题:
、               个人觉得实际上就是保证了在求解过程中的f [ V ] 的V是 所给的物品的体积能够加起来的值。。。。
                    进一步解释的网站链接☞ 关于初始化的图解
 
             :) 关于路径的记录问题: 以后补充



         2.  ❤ ❤ ❤ ❤ ❤   完全背包    ❤ ❤ ❤ ❤ ❤ ————f[i][v]=max{f[i-1][v],f[i][v-c[i]]+w[i]}
           
             :) 关于那个完全背包转换为01背包中的2^k没有看懂2333333 不过好像也没有辣么重要QAQ

  
            :)  关于路径的记录问题:以后补充

            :) 关于完全背包的正序问题  :
                   (1) for  i  (1 → n);
                                     for v (w [ i ] → vmax);
                                         f [ v ] = max { f [ v] , f [ v - c [ i ] ]+ w [ i ]  };
                             解释:从01背包为什么要逆序我们可以知道,V正序的时候,f [ w [ i ] ]....f [ vmax ] 已经更新到了f [ i ], 因为物品可以放很多次呀。在max中,前面那一个就是在此时的v 的时候,我们选择不放入i物品;而后面那个式子,表示的是对于现在的v ,我们选择放入i 物品(但是在 f [ v - c  [ i ] ] 的时候,我们可能已经选过了i 物品,这也就是和01 背包的区别)。


           3. ❤ ❤ ❤ ❤ ❤ 多重背包 ❤ ❤ ❤ ❤ ❤
                    关于没有优化,01+完全,01三种代码的网址链接☞ 大致理解
    
                   :)  进一步补充:以后补充



                   


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值