hdu 悼念512汶川大地震遇难同胞——珍惜现在,感恩生活(多重背包)

http://acm.hdu.edu.cn/showproblem.php?pid=2191

#include<stdio.h>
#include<iostream>
#include<string.h>
using namespace std;
const int N=1000;
int w[N],val[N],dp[N],num[N];
int main()
{
    int c,n,m,i,j,k;
    scanf("%d",&c);
    while(c--)
    {
        scanf("%d%d",&n,&m);
        for(i=1;i<=m;i++)
        {
            scanf("%d%d%d",&w[i],&val[i],&num[i]);
        }
        memset(dp,0,sizeof(dp));
        for(i=1;i<=m;i++)
        {
            for(j=1;j<=num[i];j++)
            {
                for(k=n;k>=w[i];k--)
                dp[k]=max(dp[k],dp[k-w[i]]+val[i]);
            }
        }
        printf("%d\n",dp[n]);
    }
}

  

posted @ 2012-03-21 17:26  Szz  阅读(229)  评论(0编辑  收藏  举报