​传送门​

NASA的食物计划_c++

思路:

dp(a,b)表示v体积m质量食物所能有的最大卡路里。

#include<bits/stdc++.h>
using namespace std;
int vi[410];
int mi[410];
int w[410];
int dp[410][410];

int main()
{
int v,m;
cin>>v>>m;
int n;
cin>>n;
for(int i = 1; i <= n; i++)
{
cin>>vi[i]>>mi[i]>>w[i];
}
for(int i = 1; i <= n; i++)
{
for(int j = v; j >= vi[i]; j--)
{
for(int k = m; k >= mi[i]; k--)
{
dp[j][k] = max(dp[j][k],dp[j-vi[i]][k-mi[i]]+w[i]);
}
}
}
printf("%d\n",dp[v][m]);
}