站外题求助
  • 板块灌水区
  • 楼主EasonX
  • 当前回复3
  • 已保存回复3
  • 发布时间2022/12/4 17:18
  • 上次更新2023/10/27 00:29:28
查看原帖
站外题求助
733488
EasonX楼主2022/12/4 17:18

题目描述 学校发暑期福利啦,给了你总共能容纳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;
}
2022/12/4 17:18
加载中...