![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/fdd488be971bb69ba6e3281db4d6b6a5.png)
代码:
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<iomanip>
#include<cstring>
#include<string>
#include<cmath>
#include<stack>
#include<queue>
#include<vector>
#include<set>
#include<map>
#define ll long long
#define mes(x,y); memset(x,y,sizeof(x))
#define mv 2147483648+30
using namespace std;
ll gar(ll a,ll b){
return b==0?a:gar(b,a%b);
}
struct node{
int weight,quality,calories;
}a[100];
int main(){
int n,m,num,dp[500][500],i,j,k;
while(cin>>n>>m){
mes(dp,0);cin>>num;
for(i=1;i<=num;i++){
cin>>a[i].weight>>a[i].quality>>a[i].calories;
}
for(i=1;i<=num;i++){
for(j=n;j>=a[i].weight;j--){
for(k=m;k>=a[i].quality;k--){
dp[j][k]=max(dp[j][k],dp[j-a[i].weight][k-a[i].quality]+a[i].calories);
}
}
}
cout<<dp[n][m]<<endl;
}
}