题解(点个赞吧)
2026-10-02 14:10:13
发布于:浙江
0阅读
0回复
0点赞
话不多说,直接上代码
#include<bits/stdc++.h>
using namespace std;
int m,n;
int w[31],a[31],p[31];
int dp[201];
int main(){
cin>>m>>n;
for(int i=1;i<=n;i++) cin>>w[i]>>a[i]>>p[i];
for(int i=1;i<=n;i++){
if(p[i]==0){
for(int j=w[i];j<=m;j++){
dp[j]=max(dp[j],dp[j-w[i]]+a[i]);
}
}
else{
for(int j=1;j<=p[i];j++){
for(int y=m;y>=w[i];y--){
dp[y]=max(dp[y],dp[y-w[i]]+a[i]);
}
}
}
}
cout<<dp[m];
return 0;
}
这里空空如也







有帮助,赞一个