您的位置:首页 > 其它

hdu-1712 分组背包问题

2013-11-02 22:34 274 查看
#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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: