hdu 2602 Bone Collector 01背包

#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;
}

你可能感兴趣的:(01背包)