HDU 1712 ACboy needs your help(简单分组DP)

http://acm.hdu.edu.cn/showproblem.php?pid=1712

m天复习n门课程,得分最高

代码:

#include<iostream>
#include<cstdio>
#include<string>
#include<cstring>
#define nMAX 110
using namespace std;
int dp[nMAX],val[nMAX];
int main()
{
    int n,m,i,j,v;
    while(~scanf("%d%d",&n,&m))
    {
        if(n==0&&m==0)break;
        memset(dp,0,sizeof(dp));
        while(n--)
        {
            for(j=1;j<=m;j++) scanf("%d",&val[j]);
            for(v=m;v>=1;v--)
            {
               for(j=1;j<=m;j++)
               {
                   if(v-j>=0)
                        dp[v]=max(dp[v],dp[v-j]+val[j]);
               }
            }
        }
        printf("%d\n",dp[m]);
    }
    return 0;
}

  

posted @ 2012-10-18 23:40  快乐.  阅读(131)  评论(0编辑  收藏  举报