题解
【基础】多重背包(1)
1 条题解
-
0
#include<bits/stdc++.h> using namespace std; int dp[120],w[120],v[120],s[120],n,m; int main(){ cin>>n>>m; for(int i=1;i<=n;i++){ //分别输入重量价值数量 cin>>w[i]>>v[i]>>s[i]; } for(int i=1;i<=n;i++){//物品的种类 for(int j=m;j>=w[i];j--){//01背包的更新范围 for(int k=0;k<=min(j/w[i],s[i]);k++){ dp[j]=max(dp[j],dp[j-k*w[i]]+k*v[i]); } } } cout<<dp[m]; return 0; }
- 1