编辑代码

#include <stdio.h>

int max(int a, int b) {
    return (a > b) ? a : b;
}

int beanBagProblem(int C, int w[], int v[], int n) {
    int dp[n + 1][C + 1];

    for (int i = 0; i <= n; i++) {
        for (int j = 0; j <= C; j++) {
            if (i == 0 || j == 0)
                dp[i][j] = 0;
            else if (w[i - 1] > j)
                dp[i][j] = dp[i - 1][j];
            else
                dp[i][j] = max(dp[i - 1][j], dp[i - 1][j - w[i - 1]] + v[i - 1]);
        }
    }

    return dp[n][C];
}

int main() {
    int C = 10;  // 背包容量
    int w[] = {2, 3, 4, 5};  // 豆子的重量
    int v[] = {3, 4, 5, 6};  // 豆子的价值
    int n = sizeof(w) / sizeof(w[0]);  // 豆子的数量

    int result = beanBagProblem(C, w, v, n);
    printf("最大重量: %d\n", result);

    return 0;
}