???
  • 板块学术版
  • 楼主OIer_hzn
  • 当前回复0
  • 已保存回复0
  • 发布时间2022/11/26 17:38
  • 上次更新2023/10/27 01:24:16
查看原帖
???
747142
OIer_hzn楼主2022/11/26 17:38

#include <iostream>
using namespace std;
const int N = 100 + 10,V = 200 + 10;
int d[N][V];
int n,c,v[N],w[N];  // c 是背包容量 v w 每件物品的 体积和 价值 
int main(){
	cin >> c >> n;
	for(int i = 1;i <= n;i ++) cin >> v[i] >> w[i];
	
	// 递推 
	for(int i = 1;i <= n;i ++){ // 枚举的 所有的物品 
		for(int j = 1;j <= c;j ++){  // 枚举的是 所有的体积  
			// 能放下  // 选 不选  
			if(v[i] <= j){  // 放得下  
				d[i][j] = max(d[i - 1][j],w[i] + d[i - 1][j - v[i]]);
			}else
				// 不能放 = 不选  
				d[i][j] = d[i - 1][j];
		}
	} 
	cout << d[n][c] << endl;
	return 0;
}

采药这道题 给一个反例

2022/11/26 17:38
加载中...