题目:
有n种物品要放到一个袋子里,袋子的总容量为m,我们一共有k点体力值。第 i 种物品的体积为,把它放进袋子里会获得的收益,并且消耗我们点体力值,每种物品只能取一次。问如何选择物品,使得在物品的总体积不超过m并且花费总体力不超过k的情况下,获得最大的收益?请求出最大收益。
题解:
#include<bits/stdc++.h>
using namespace std;
int dp[105][105];
int wi[1005],vi[1005],ti[1005];
int main(){
int n,m,k;
cin>>n>>m>>k;
for(int i=1;i<=n;i++){
cin>>vi[i]>>wi[i]>>ti[i];
}
for(int i=1;i<=n;i++){
for(int j=m;j>=vi[i];j--){
for(int p=k;p>=ti[i];p--){
dp[j][p]=max(dp[j][p],dp[j-vi[i]][p-ti[i]]+wi[i]);
}
}
}
cout<<dp[m][k];
return 0;
}