完全背包

Posted iwpml-595

tags:

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

完全背包就是可以不限次数的放

一维dp

 1 #include<iostream>
 2 #include<algorithm>
 3 #include<cstdio>
 4 using namespace std;
 5 int dp[120];
 6 int value[1100];
 7 int popular[1100];
 8 int main()
 9 {
10     int n,m;
11     cin>>m>>n;
12     for(int i=1;i<=n;i++)
13     {
14         cin>>value[i]>>popular[i];
15     }
16     for(int i=1;i<=n;i++)
17         for(int j=value[i];j<=m;j++)
18             dp[j]=max(dp[j],dp[j-value[i]]+popular[i]);
19     cout<<dp[m]<<endl;
20     return 0;
21 }

二维dp

 1 #include<iostream>
 2 #include<algorithm>
 3 #include<cstdio>
 4 using namespace std;
 5 int dp[120][1100];
 6 int value[1100];
 7 int popular[1100];
 8 int main()
 9 {
10     int n,m;
11     cin>>m>>n;// m为最大容量,n为件数
12     for(int i=1;i<=n;i++)
13     {
14         cin>>value[i]>>popular[i];
15     }
16     for(int i=1;i<=n;i++)
17     {
18         for(int j=1;j<=value[i];j++)
19         {
20             dp[i][j]=dp[i-1][j];
21         }
22         for(int j=value[i];j<=m;j++)
23             dp[i][j]=max(dp[i-1][j],dp[i][j-value[i]]+popular[i]);
24     }
25     cout<<dp[n][m]<<endl;
26     return 0;
27 }

 

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

背包0-1背包与完全背包一维数组实现

完全背包问题 POJ1384

3. 完全背包问题

POJ 3260 多重背包+完全背包

动态规划第八篇:认识完全背包问题

动态规划第八篇:认识完全背包问题