题目大意:
有一个骨头收集者,他有一个背包,体积为V,每个骨头有相应的体积和重量,他想知道他最多能带走多重的骨头。
题目思路:
01背包模板题
题目代码:
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#define maxn 1005
using namespace std;
long long f[maxn];
int v[maxn],num[maxn];
int main(void)
{
int t;
int n,vol;
scanf("%d",&t);
while(t--)
{
memset(f,0,sizeof(f));
scanf("%d%d",&n,&vol);
for(int i=0;i<n;i++)
{
scanf("%d",&num[i]);
}
for(int i=0;i<n;i++)
{
scanf("%d",&v[i]);
}
for(int i=0;i<n;i++)
{
for(int j=vol;j>=v[i];j--)
{
f[j]=max(f[j],f[j-v[i]]+num[i]);
}
}
printf("%lld\n",f[vol]);
}
}
呼呼