动态规划01背包C语言代码
时间: 2023-07-08 17:24:46 浏览: 108
下面是一个简单的动态规划 01 背包问题的 C 语言代码实现:
```
#include <stdio.h>
#define N 5 // 物品数量
#define W 10 // 背包容量
int max(int a, int b) {
return a > b ? a : b;
}
int main() {
int i, j;
int w[N+1] = {0, 2, 2, 6, 5, 4}; // 每个物品的重量
int v[N+1] = {0, 6, 3, 5, 4, 6}; // 每个物品的价值
int dp[N+1][W+1] = {0}; // dp[i][j] 表示前 i 个物品,容量为 j 的情况下的最大价值
for (i = 1; i <= N; i++) {
for (j = 1; j <= W; 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];
}
}
}
printf("最大价值为:%d\n", dp[N][W]);
return 0;
}
```
这是一个简单的动态规划 01 背包问题的代码,复杂度为 O(NW),其中 N 表示物品数量,W 表示背包容量。
阅读全文