完全背包

本文深入探讨了完美背包问题,一种允许物品无限次选取的背包问题变体。通过使用动态规划方法,尤其是降维技巧和正序循环,文章详细解释了如何在给定背包容量和物品属性的情况下,最大化所选物品的总价值。

完美背包问题的模型如下:

  给定N个物品,其中第i种物品的体积为Vi,价值为Wi,并且有无数个。有一个容积为M的背包,要求选择若干个物品放入背包,使得物品总体积不超过M的前提下,物品的价值总和最大。

我们可以像我们之前讨论0/1背包一样的考虑传统的二维dp方法https://www.cnblogs.com/wmj6/p/10387746.html

同样的分析方法 我们可以降为1维且当我们的第二重循环采用正序循环时,就对应着物品可以使用无限次

memset(dp,0,sizeof(dp));
    dp[0]=0;
    for(int i=1;i<=n;i++){
        for(int j=v[i];j<=m;j++)
            dp[j]=max(dp[j],dp[j-v[i]]+w[i]);
    }

 

转载于:https://www.cnblogs.com/wmj6/p/10387774.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值