题解哦,亲
2023-10-17 20:35:45
发布于:广东
20阅读
0回复
0点赞
include<iostream>
using namespace std;
int m,n,dp[10001],w[10001],v[10001],s[10001];
int main() {
cin>>m>>n;
for(int i=1;i<=n;i++)
{
cin>>w[i]>>v[i]>>s[i];
}
for(int i=1;i<=n;i++)
{
if(s[i]==1){
for(int j=1;j<=m;j++)
{
if(j>=w[i]){
dp[j]=max(dp[j],dp[j-w[i]]+v[i]);
}
}
}
else if(s[i]==0){
for(int j=m;j>=1;j--)
{
if(j>=w[i]){
dp[j]=max(dp[j],dp[j-w[i]]+v[i]);
}
}
}
else{
for(int j=m;j>=1;j--)
{
for(int k=1;k<=s[i];k++)
{
if(j>=k*w[i]){
dp[j]=max(dp[j],dp[j-w[i]*k]+v[i]*k);
}
}
}
}
}
cout<<dp[m];
return 0;
}
这里空空如也
有帮助,赞一个