裸01背包
1 #include<iostream> 2 #include<algorithm> 3 #include<cstring> 4 using namespace std; 5 int v[3405]; 6 int w[3405]; 7 int f[13000]; 8 int main() 9 { 10 int n,m; 11 cin>>n>>m; 12 for(int i=1;i<=n;i++) 13 { 14 cin>>w[i]>>v[i]; 15 } 16 memset(f,0,sizeof(f)); 17 for(int i=1;i<=n;i++) 18 { 19 for(int j=m;j>=w[i];j--) 20 { 21 f[j]=max(f[j],f[j-w[i]]+v[i]); 22 } 23 } 24 int res=0; 25 for(int i=1;i<=m;i++) 26 { 27 res=max(res,f[i]); 28 } 29 cout<<res<<endl; 30 return 0; 31 }
本文详细解析了裸01背包问题的C++实现过程,包括读取物品数量和背包容量,输入每件物品的价值和重量,使用动态规划求解最大价值,并最终输出结果。通过具体代码展示了裸01背包问题的解决思路。
383

被折叠的 条评论
为什么被折叠?



