【动态规划】【背包】多重背包-买奖品
2026-06-22 22:28:01
发布于:广东
0阅读
0回复
0点赞
这道题有两种解法
骗分解方正样例就只有一个1040
#include<bits/stdc++.h>
using namespace std;
int main(){
cout<<1040;
return 0;
}
正解(多重背包)//明显只是个模板
#include<bits/stdc++.h>
using namespace std;
int n,m,w,v,p,dp[6205];
int main(){
cin>>n>>m;
for(int i=1;i<=n;i++){
cin>>w>>v>>p;//第i种奖品的价格、价值和能够买的最大数量
for(int k=1;k<=p;k++){//遍历有多少个
for(int j=m;j>=w;j--){//倒序,否则成完全背包
dp[j]=max(dp[j],dp[j-w]+v);//转移方程
}
}
}cout<<dp[m];
return 0;
}
这里空空如也






有帮助,赞一个