题目链接
**题意:**给一个一定体积的背包,再给出一定数量的物品,物品有自己的体积和价值,求背包能装入物品的最大价值。
代码:
//#include<bits/stdc++.h>
#include<iostream>
#include<cstring>
#include<cmath>
#include<algorithm>
#include<cstdlib>
#include<cstdio>
using namespace std;
int w[1003]; //体积
int v[1003]; //价值
int s[1003][1003];
int main()
{
int t,n,m;
cin>>t;
while(t--)
{
memset(s,0,sizeof(s));
cin>>n>>m;
for(int i=1;i<=n;i++)
{
cin>>v[i]; //每个骨骼的价值
}
for(int i=1;i<=n;i++)
{
cin>>w[i]; //每个骨骼的体积
}
//0-1背包
for(int i=1;i<=n;i++)
{
for(int j=0;j<=m;j++) //从0开始意味着重量为0也可以计算
{
if(j>=w[i])
{
s[i][j]=max(s[i-1][j],s[i-1][j-w[i]]+v[i]); // 此时的值是[i-1][j-w[i]]+v[i] 和 [i-1][j]比较
}
else
s[i][j]=s[i-1][j];
}
}
cout<<s[n][m]<<endl;
}
return 0;
}