题目描述 学校发暑期福利啦,给了你总共能容纳V大小的背包,最大承重量为W。
允许你到超市里任意选购商品,学校报销哦。
现在超市有n种物品。每种物品无限件。
每种物品有其大小bi,价值vi,重量wi。
现需要你计算出你能得到的最大价值是多少?
输入输出格式: 输入格式
第一行,3个整数,n,V,W。
第二行,n个整数,bi。
第三行,n个整数,vi。
第四行,n个整数,wi。
N<=100
V<=500
W<=500
bi<=50
wi<=50
vi<=500
输出格式:
一个整数表示价值。
输入输出样例
输入样例#1:
1 464 387
19
80
38
输出样例#1:
800
我只知道这题是背包,代码如下:
#include<bits/stdc++.h>
using namespace std;
int n,c,w[105],v[105],b[105],f[1005][1005],m;
int main(){
cin>>n>>c>>m;
for(int i=1;i<=n;i++)cin>>b[i];
for(int i=1;i<=n;i++)cin>>w[i];
for(int i=1;i<=n;i++)cin>>v[i];
for(int i=1;i<=n;i++)
for(int j=b[i];j<=m;j++)
for(int k=w[i];k<=c;k++)if(j>=b[i]&&k>=w[i])f[j][k]=max(f[j][k],f[j-b[i]][k-w[i]]+v[i]);
cout<<f[m][c];
return 0;
}