您的位置:首页 > 其它

hdu 2602 Bone Collector 01背包

2013-07-18 15:50 363 查看
#include <stdio.h>
#include <math.h>
#include <string.h>
using namespace std;
int f[1001];
int c[1001],w[1001];
int max(int a,int b)
{
    return a>b?a:b;
}
int main()
{
    int T;
    scanf("%d",&T);
    while(T--)
    {
        int n,m,i,j,k;
        scanf("%d%d",&n,&m);
        for(i=0;i<n;i++)
            scanf("%d",&w[i]);
        for(i=0;i<n;i++)
            scanf("%d",&c[i]);
        for(i=0;i<=m;i++)
            f[i]=0;
        for(i=0;i<n;i++)
        {
            for(j=m;j>=c[i];j--)
                f[j]=max(f[j],f[j-c[i]]+w[i]);
        }
        printf("%d\n",f[m]);
    }
    return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: