01背包+完全背包

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了01背包+完全背包相关的知识,希望对你有一定的参考价值。

01背包

 1 void test_1_wei_bag_problem() {
 2     vector<int> weight = {1, 3, 4};
 3     vector<int> value = {15, 20, 30};
 4     int bagWeight = 4;
 5 
 6     // 初始化
 7     vector<int> dp(bagWeight + 1, 0);
 8     for(int i = 0; i < weight.size(); i++) { // 遍历物品
 9         for(int j = bagWeight; j >= weight[i]; j--) { // 遍历背包容量
10             dp[j] = max(dp[j], dp[j - weight[i]] + value[i]);
11         }
12     }
13     cout << dp[bagWeight] << endl;
14 }
15 
16 int main() {
17     test_1_wei_bag_problem();
18 }

完全背包

 1 // 先遍历物品,在遍历背包
 2 void test_CompletePack() {
 3     vector<int> weight = {1, 3, 4};
 4     vector<int> value = {15, 20, 30};
 5     int bagWeight = 4;
 6     vector<int> dp(bagWeight + 1, 0);
 7     for(int i = 0; i < weight.size(); i++) { // 遍历物品
 8         for(int j = weight[i]; j <= bagWeight; j++) { // 遍历背包容量
 9             dp[j] = max(dp[j], dp[j - weight[i]] + value[i]);
10         }
11     }
12     cout << dp[bagWeight] << endl;
13 }
14 int main() {
15     test_CompletePack();
16 }

 

以上是关于01背包+完全背包的主要内容,如果未能解决你的问题,请参考以下文章

动态规划第五篇:01背包问题和完全背包问题

动态规划第五篇:01背包问题和完全背包问题

混合背包

01背包完全背包多重背包分组背包总结

01背包和完全背包问题

动态规划背包问题总结:01完全多重与其二进制优化分组背包 题解与模板