kamacoder-solutions icon indicating copy to clipboard operation
kamacoder-solutions copied to clipboard

feature:Update 0056.携带矿石资源.md C++题解

Open DIDA-lJ opened this issue 1 year ago • 0 comments

#include<iostream>
#include<vector>
#include<cmath>
using namespace std;
int c,n; // 容量 和 种类数量 
void chose(){
	vector<int>weight(n);
	vector<int>value(n);
	vector<int>nums(n);
	for(int i = 0;i < n;i++){
		cin >> weight[i];
	}
	for(int i = 0;i < n;i++){
		cin >> value[i];
	}
	for(int i = 0;i < n;i++){
		cin >> nums[i];
	}

	//标准的01背包
	vector<int>dp(c+1,0);
	for(int i = 0;i < n;i++){
		for(int j = c;j >= weight[i];j--){
			for(int k = 0;k <= nums[i] && (j - k*weight[i]) >= 0;k++){
				dp[j] = max(dp[j], dp[j-k*weight[i]] + k*value[i]);
			}
			
		}
	} 
	cout << dp[c] << endl;
}
 

int main(){
	cin >> c >> n;
	chose();
	return 0;
}

DIDA-lJ avatar Nov 23 '23 12:11 DIDA-lJ