请写出01背包问题动态规划c++的代码
时间: 2023-10-31 13:03:53 浏览: 101
动态规划 01背包问题 c++代码
下面是01背包问题的动态规划代码:
```c
#include <stdio.h>
#define MAX_N 100
#define MAX_W 1000
int N; // 物品数量
int W; // 背包容量
int w[MAX_N]; // 物品重量
int v[MAX_N]; // 物品价值
int dp[MAX_N+1][MAX_W+1]; // dp[i][j] 表示前 i 个物品中,重量不超过 j 的最大价值
int max(int a, int b) {
return a > b ? a : b;
}
int main() {
scanf("%d %d", &N, &W);
for (int i = 0; i < N; i++) {
scanf("%d %d", &w[i], &v[i]);
}
for (int i = 0; i < N; i++) {
for (int j = 0; j <= W; j++) {
if (j - w[i] >= 0) {
dp[i+1][j] = max(dp[i][j], dp[i][j-w[i]] + v[i]);
} else {
dp[i+1][j] = dp[i][j];
}
}
}
printf("%d\n", dp[N][W]);
return 0;
}
```
阅读全文