我按照我的想法做了一个这样的程序:
#include<iostream>
#include<cstring>
const int NM = 1e3 + 10;
int n,m,dp[NM],a[NM],b[NM],c[NM];
int main(){
scanf("%d%d",&m,&n);
for(int i = 1;i <= n;i ++){
scanf("%d%d%d",a + i,b + i,c + i);
}
dp[0] = 0;
for(int i = 1;i <= n;i ++){
for(int j = m;j >= 1;j --){
for(int k = 1;k <= c[i];k ++){
if(j - a[i] >= 0) dp[j] = std::max(dp[j],dp[j - k * a[i]] + k * b[i]);
}
}
}
printf("%d",dp[m]);
}
结果样例不对
才知道是我写错了
谁能帮帮我?
不要code
必关
不用互关