hdu1712

/*
分析:
    背包。
dp[i][l]=max(dp[i-1][l],max(dp[i-1][l-k]+x[k]))  (1<=k<=m,x[k]代表第i节课上k天所得profit)。


                                                            2012-05-10
*/






#include"stdio.h"
int max(int a,int b)
{
	return a>b?a:b;
}
int main()
{
	int dp[111];
	int n,m;
	int x[111];
	int i,j,k;
	int ans;
	while(scanf("%d%d",&n,&m),n||m)
	{
		if(n==0||m==0)
		{
			printf("0\n");
			continue;
		}


		for(j=1;j<=m;j++)	scanf("%d",&dp[j]);
		dp[0]=0;
		for(i=2;i<=n;i++)
		{
			for(j=1;j<=m;j++)	scanf("%d",&x[j]);
			
			for(j=m;j>=1;j--)
			for(k=j;k>=1;k--)
				dp[j]=max(dp[j],dp[j-k]+x[k]);
		}


		ans=0;
		for(j=1;j<=m;j++)	if(dp[j]>ans)	ans=dp[j];
		
		printf("%d\n",ans);
	}
	return 0;
}


你可能感兴趣的:(hdu1712)