我试图实现一个算法来解决Knapsack problem

cst = 1;

for (j = 0; j < 200; j++) {
    if (kk - cst < 0) {
        continue;
        cst++;
    }

    for (i = kk - cst; i >= 0; --i) {
        C[i + cst] = max(C[i + cst], C[i] + index[cst]);
    }
    cst++;
}

index数组具有由数组索引表示的各个项的值。我想知道我错在哪里。

最佳答案

在你的代码中

if(kk-cst < 0)
        {
            continue;
            cst++;
        }

是错误的。永远不会执行cst++请检查并相应地更改逻辑。

关于c - 我如何实现背包算法,其中数组的索引表示项目的重量,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31344609/

10-12 02:07