多重背包问题的二进制分解思想

/**
    在这之前,我空间好像转过一个背包九讲,现在我就只对
    01背包和多重背包有点印象了

    先说下 01 背包,有n 种不同的物品,每个物品有两个属性
    size 体积,value 价值,现在给一个容量为 w 的背包,问
    最多可带走多少价值的物品。

    int f[w+1];   //f[x] 表示背包容量为x 时的最大价值
    for (int i=0; i=size[i]; j++)
            f[j] = max(f[j], f[j-size[i]]+value[i]);

    如果物品不计件数,就是每个物品不只一件的话,稍微改下即可
    for (int i=0; i 0) {
            value[count] = c*v;
            size[count++] = c*s;
        }
    }

    现在用count 代替 n 就和01 背包问题完全一样了

    晚安 一天天真娘的快
*/

收藏于 2012-01-14
来自于百度空间

你可能感兴趣的:(算法)