其实可以理解成有两个体积限制的01背包
1 #include<iostream> 2 #include<cstdio> 3 4 using namespace std; 5 6 int n,m,x,a[101],b[101],c[101],f[1001][1001]; 7 8 int main() { 9 scanf("%d%d%d",&n,&m,&x); 10 for(int i = 1;i <= n; i++) 11 scanf("%d%d%d",&a[i],&b[i],&c[i]); 12 for(int i = 1;i <= n; i++) 13 for(int j = m;j >= b[i]; j--) 14 for(int k = x;k >= c[i]; k--) 15 f[j][k] = max(f[j][k],f[j-b[i]][k-c[i]] + a[i]); 16 printf("%d",f[m][x]); 17 return 0; 18 }
原文:https://www.cnblogs.com/lipeiyi520/p/11986292.html