hdu 2602 Bone Collector 基础01背包

题目链接

题意:给出n个骨头的体积和价值,求容量为v的包能装的最大价值。

基础01背包题。

#include <iostream>
#include<cstdio>
#include<cstring>
#include<cmath>

using namespace std;

int v[1100],w[1100],d[1100];

int main()
{
    int T;
    cin>>T;
    while(T--)
    {
        int n,m,ans=0;
        cin>>n>>m;
        for(int i=0;i<n;i++)    scanf("%d",&v[i]);
        for(int i=0;i<n;i++)    scanf("%d",&w[i]);
        memset(d,0,sizeof(d));
        for(int i=0;i<n;i++)
            for(int j=m;j>=w[i];j--)
            {
                d[j]=max(d[j],d[j-w[i]]+v[i]);
                ans=max(ans,d[j]);
            }
        cout<<ans<<endl;
    }
}

你可能感兴趣的:(动态规划,ACM,HDU,背包,01背包)