#include "stdio.h"
#include "string.h"
int A[105][105];
int dp[105];
int main()
{
int n,m,i,j,k;
while( scanf("%d%d",&n,&m)==2 && ( n || m ))
{
for( i=1;i<=n;i++ )
{
for( j=1;j<=m;j++ )
scanf("%d",&A[i][j]);
}
memset(dp,0,sizeof(dp));
for( i=1;i<=n;i++ ) //2.再从每组中的最优解选出最优解
{
for( j=m;j>=0;j-- ) //1.先在第i组中01背包选出最优解
{
for( k=1;k<=j;k++ )
if( dp[j] < dp[j-k]+A[i][k] )
dp[j] = dp[j-k]+A[i][k];
}
}
printf("%d\n",dp[m]);
}
return 0;
}
hdu-1712 分组背包问题
最新推荐文章于 2020-06-21 14:48:19 发布