f[j][k] = max( f[j - b][k - c] + a)
1 #include<cstdio> 2 #include<iostream> 3 4 using namespace std; 5 6 int dp[1005][1005]; 7 8 int main(){ 9 int n, m, x, a, b, c; 10 scanf("%d%d%d", &n, &m, &x); 11 for(int i = 1; i <= n; i++){ 12 scanf("%d%d%d", &a, &b, &c); 13 for(int j = m; j >= b; j--){//核心 14 for(int k = x; k >= c; k--){ 15 dp[j][k] = max(dp[j][k], dp[j - b][k - c] + a); 16 } 17 } 18 } 19 printf("%d\n", dp[m][x]); 20 }
原文:https://www.cnblogs.com/New-ljx/p/11185764.html