题意:给出一组价值的数据,再给出一组体积的数据。求在m体积下所放的物品价值最大价值。

连接:http://acm.hdu.edu.cn/showproblem.php?pid=2602

View Code
#include <iostream>
using namespace std;
const int MAX=1000+10;
int v[MAX];
int w[MAX];
int dp[MAX];
int cmp(int a,int b)
{
    return a>b?a:b;
}
int main()
{
    int k;
    while(~scanf("%d",&k))
    {
        while(k--)
        {
            memset(w,0,sizeof(w));
            memset(v,0,sizeof(v));
            memset(dp,0,sizeof(dp));
            int n,m;
            scanf("%d%d",&n,&m);
            for(int i=1;i<=n;i++)
            {
                scanf("%d",&w[i]);//价值
            }
            for(i=1;i<=n;i++)
            {
                scanf("%d",&v[i]);//体积
            }
            for(i=1;i<=n;i++)
            {
                for(int j=m;j>=v[i];j--)
                {
                    dp[j]=cmp(dp[j],dp[j-v[i]]+w[i]);
                }
            }
            printf("%d\n",dp[m]);
        }
    }
    return 0;
}