hdu 1712 ACboy needs your help (dp 分组背包)

 

 

#include<cstdio>

#include<cstring>

#include<iostream>

#include<algorithm>

using namespace std;

int a[200][200];

int dp[200];

int main()

{

    int n,m;

    int i,j,k;

    while(scanf("%d%d",&n,&m)!=EOF)

    {

        if(n==0&&m==0) break;

        memset(dp,0,sizeof(dp));

        int ans=0;

        for(i=1;i<=n;i++)

        {

            for(j=1;j<=m;j++)

            {

                scanf("%d",&a[i][j]);

            }

        }

        for(i=1;i<=n;i++)  //第 i 项作业

        {

            for(j=m;j>=1;j--)  //剩 j 天

            {

                for(k=1;k<=j;k++)

                {

                    dp[j]=max(dp[j],dp[j-k]+a[i][k]);

                    ans=max(ans,dp[k]);

                }

            }

        }

        printf("%d\n",ans);

    }

    return 0;

}

 

你可能感兴趣的:(help)