0
2024-09-07 12:03:17
发布于:广东
0阅读
0回复
0点赞
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main() {
int W,N;
cin >> W >> N; // 输入背包容量、草药数量
vector<int> w(N), v(N);
for (int i = 0; i < N; ++i) {
cin >> w[i] >> v[i]; // 输入每个物品的重量和价值
}
// dp[i][j] 表示前 i 个草药,背包容量为 j 时的最大价值
vector<vector<int> > dp(N + 1, vector<int>(W + 1, 0));
for (int i = 1; i <= N; ++i) {
for (int j = 0; j <= W; ++j) {
if (j >= w[i - 1]) {
// 选择当前草药
dp[i][j] = max(dp[i - 1][j], dp[i - 1][j - w[i - 1]] + v[i - 1]);
} else {
// 不选择当前草药
dp[i][j] = dp[i - 1][j];
}
}
}
cout << dp[N][W] << endl; // 输出最大价值
return 0;
}
这里空空如也
有帮助,赞一个