c语言解决01背包问题示例代码

代码语言:c

所属分类:算法

代码描述:c语言解决01背包问题示例代码,01背包问题就是你需要选择一组物品放入一个背包,以使它们的总价值最大化,同时不超过背包的容量限制。

代码标签: c 语言 解决 01 背包 问题 示例 代码

下面为部分代码预览,完整代码请点击下载或在bfwstudio webide中打开

#include <stdio.h>

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

void knapsack(int values[], int weights[], int capacity, int n) {
    int dp[n + 1][capacity + 1];
    int i,
    w; // 将变量声明移到循环外

    for (i = 0; i <= n; i++) {
        for (w = 0; w <= capacity; w++) {
            if (i == 0 || w == 0) {
                dp[i][w] = 0;
            }
            else if (weights[i - 1] <= w) {
                dp[i][w] = max(values[i - 1] + dp[i - 1][w - weights[i - 1]], dp[i - 1][w]);
            }
            else {
                dp[i][w] = dp[i - 1][w];
            }
        }
    }

    int max_value = dp[n][capacity];
    int selected_items[n];
    int item_count = 0;

    i = n;
    w = capacity.........完整代码请登录后点击上方下载按钮下载查看

网友评论0