指数级暴力解法

发布时间 2023-05-22 12:03:33作者: chuxin_jian

指数级暴力解法

情景1-选N件物品

每件物品都有选与不选两种状态,二级制0/1表示
那n件物品的总情况就有2n种,d对应的二进制数从0~2n.

以 1010 为例, 四件物品 a b c d
如果从左往右表示 abcd
则选 a c 不选 b d

遍历代码示例如下

    for (i = 0; i < total; i++)//i为情况对应的二进制数
    {
        int tempCost = 0;
        for (j = 1; j <= n; j++)//n为物品个数
        {
            int state = i >> (j - 1) & 0x1;//选与不选
            tempCost += price[j] * state;
        }
        if (tempCost >= x && tempCost < minCost)
        {
            minCost = tempCost;
        }
    }