描述
有 N 种物品和一个容量是 M 的背包。
第 i 种物品最多有 si 件,每件体积是 wi,价值是 vi。
求解将哪些物品装入背包,可使物品体积总和不超过背包容量,且价值总和最大。
输出最大价值。
输入描述
第一行两个整数,N,M,用空格隔开,分别表示物品种数和背包容积。
接下来有 N 行,每行三个整数 wi,vi,si,用空格隔开,分别表示第 i 种物品的体积、价值和数量。
输出描述
输出一个整数,表示最大价值。
#include<bits/stdc++.h>
using namespace std;
int w;
int v;
int s;
int dp[200000];
int main(){
int n,m;
cin>>n>>m;
for(int i=1;i<=n;i++){
cin>>w>>v>>s;
for(int k=1;k<=s;k++){
for(int j=m;j>=w;j--){
dp[j]=max(dp[j],dp[j-w]+v);
}
}
}
cout<<dp[m];
return 0;
}