0-1背包问题动态规划法c++
时间: 2023-08-01 18:12:02 浏览: 105
c++实现动态规划算法解决0-1背包问题
5星 · 资源好评率100%
以下是使用动态规划法解决0-1背包问题的C++代码:
```cpp
#include <iostream>
#include <algorithm>
using namespace std;
int main() {
const int N = 1005;
int n, m, w[N], v[N], dp[N][N] = {0};
cin >> n >> m;
for (int i = 1; i <= n; i++) {
cin >> w[i] >> v[i];
}
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= m; j++) {
if (j >= w[i]) {
dp[i][j] = max(dp[i - 1][j], dp[i - 1][j - w[i]] + v[i]);
} else {
dp[i][j] = dp[i - 1][j];
}
}
}
cout << dp[n][m] << endl;
return 0;
}
```
其中,dp[i][j]表示前i个物品,容量为j时的最大价值。通过递推,可以得到dp[n][m]即为最终的最大价值。
阅读全文