多重背包问题

简介: 多重背包问题

题目

题目链接

例如:

背包最大重量为10。

物品为:

重量 价值 数量
物品0 1 15
物品1 3 20
物品2 4 30

问背包能背的物品最大价值是多少?

#include<iostream>
#include<vector>
using namespace std;
void test_multi_pack() {
    vector<int> weight = {1, 3, 4};
    vector<int> value = {15, 20, 30};
    vector<int> nums = {2, 3, 2};
    int bagWeight = 10;
    //***********代码编写区*************
    //***********代码编写区*************
    cout << dp[bagWeight] << endl;
}
int main(){
    test_multi_pack();
    system("pause");
    return 0;
}

解题

每件物品最多有Mi件可用,把Mi件摊开,其实就是一个01背包问题了

#include<iostream>
#include<vector>
using namespace std;
void test_multi_pack() {
    vector<int> weight = {1, 3, 4};
    vector<int> value = {15, 20, 30};
    vector<int> nums = {2, 3, 2};
    int bagWeight = 10;
    for (int i = 0; i < nums.size(); i++) {
        while (nums[i] > 1) { // nums[i]保留到1,把其他物品都展开
            weight.push_back(weight[i]);
            value.push_back(value[i]);
            nums[i]--;
        }
    }
    vector<int> dp(bagWeight + 1, 0);
    for(int i = 0; i < weight.size(); i++) { // 遍历物品
        for(int j = bagWeight; j >= weight[i]; j--) { // 遍历背包容量
            dp[j] = max(dp[j], dp[j - weight[i]] + value[i]);
        }
        for (int j = 0; j <= bagWeight; j++) {
            cout << dp[j] << " ";
        }
        cout << endl;
    }
    cout << dp[bagWeight] << endl;
}
int main(){
    test_multi_pack();
    system("pause");
    return 0;
}


相关文章
|
8月前
多重背包和分组背包
多重背包和分组背包
|
算法 C语言 C++
【动态规划】多重背包问题,分组背包问题
与完全背包问题不同的是,每种东西都是有限件,前两种状态就不再过多赘述
155 4
动态规划——多重背包、分组背包
动态规划——多重背包、分组背包
68 0
动态规划:多重背包问题
动态规划:多重背包问题
79 0
|
测试技术 容器
动态规划之背包问题——背包三讲(01背包,完全背包,多重背包)(三)
动态规划之背包问题——背包三讲(01背包,完全背包,多重背包)(三)
241 0
动态规划之背包问题——背包三讲(01背包,完全背包,多重背包)(三)
|
算法
背包DP——背包问题
背包DP——背包问题
133 0
背包DP——背包问题
|
测试技术
动态规划之背包问题——背包三讲(01背包,完全背包,多重背包)(二)
动态规划之背包问题——背包三讲(01背包,完全背包,多重背包)(二)
301 0
动态规划之背包问题——背包三讲(01背包,完全背包,多重背包)(二)
|
JavaScript 测试技术 vr&ar
动态规划之背包问题——背包三讲(01背包,完全背包,多重背包)(一)
动态规划之背包问题——背包三讲(01背包,完全背包,多重背包)(一)
162 0
动态规划之背包问题——背包三讲(01背包,完全背包,多重背包)(一)
|
算法
多重背包问题(一)
AcWing算法提高课内容,本文讲解 动态规划
140 0
多重背包问题(一)

热门文章

最新文章

下一篇
开通oss服务