题解
【基础】简单背包问题
1 条题解
-
0
#include <iostream> #include <algorithm> using namespace std; int main() { int maxw, n; cin >> maxw >> n; int weight[105], value[105]; for (int i = 1; i <= n; i++) { cin >> weight[i] >> value[i]; } // dp[j] 表示背包容量为 j 时的最大价值 int dp[20005] = {0}; for (int i = 1; i <= n; i++) { // 从大到小遍历,保证每个物品只选一次 for (int j = maxw; j >= weight[i]; j--) { dp[j] = max(dp[j], dp[j - weight[i]] + value[i]); } } cout << dp[maxw] << endl; return 0; }
- 1