C语言实现0-1背包
时间: 2023-09-10 15:07:47 浏览: 67
下面是C语言实现0-1背包的代码:
```c
#include <stdio.h>
#define MAX_N 100
#define MAX_W 1000
int n; // 物品数量
int w[MAX_N]; // 物品重量
int v[MAX_N]; // 物品价值
int W; // 背包容量
int dp[MAX_N+1][MAX_W+1]; // DP表
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]) {
dp[i+1][j] = dp[i][j];
} else {
dp[i+1][j] = max(dp[i][j], dp[i][j-w[i]]+v[i]);
}
}
}
printf("%d\n", dp[n][W]);
return 0;
}
```
该代码使用DP算法实现0-1背包问题,其中`w`数组存储物品的重量,`v`数组存储物品的价值,`W`为背包容量,`dp`数组为DP表。
阅读全文