hdu1712分组背包

//分组背包中,每组都能连上的背包,每组取的方式都一样,可以随意取。
#include<iostream>
#include<cstdio>
#include<cstring>
#define maxn 105
using namespace std;
int n,m;
int v[maxn][maxn],f[maxn];
int max(int x,int y)
{
    return x>y?x:y;
}
int main()
{
    while(scanf("%d%d",&n,&m)!=EOF)
    {
        if(n==0&&m==0) break;
        for(int i=1;i<=n;i++)
        for(int j=1;j<=m;j++)
        scanf("%d",&v[i][j]);

        memset(f,0,sizeof(f));
        for(int i=1;i<=n;i++)
        {
            for(int j=m;j>=1;j--)//天数限制
            {
                for(int k=1;k<=j;k++)//种类
                {
                    f[j]=max(f[j],f[j-k]+v[i][k]);
                }
            }
        }
        printf("%d\n",f[m]);
    }
	return 0;
}

你可能感兴趣的:(hdu1712分组背包)