HDU 1712分组背包 考试复习安排
就是每个组中只要选择一种,然后0-1背包一下。
View Code
1 #include <cstdio> 2 #include <cstring> 3 int main() 4 { 5 int n,m; 6 while(~scanf("%d%d",&n,&m)) 7 { 8 int f[200],A[200][200]; 9 if(n == 0 && m == 0) break; 10 for(int i=0; i<n; i++) 11 for(int j=1; j<=m; j++) 12 scanf("%d",&A[i][j]); 13 memset(f,0,sizeof(f)); 14 for(int i = 0; i<n; i++) 15 { 16 for(int v = m; v>=0; v--) 17 { 18 for(int k = 1; k<=v; k++) 19 { 20 if(f[v] < f[v - k] +A[i][k]) 21 f[v] = f[v-k] + A[i][k]; 22 } 23 } 24 } 25 printf("%d\n",f[m]); 26 } 27 return 0; 28 }