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 }

 

posted on 2013-03-28 12:43  allh123  阅读(133)  评论(0编辑  收藏  举报

导航