3

指定された長さの C++ ビットセットがあります。2^bitset.length を 1 倍することを考えたこのビットセットのすべての可能な組み合わせを生成したいと考えています。これを行う方法?Boost ライブラリ ソリューションも使用可能

4

4 に答える 4

5

これを試して:

/*
 * This function adds 1 to the bitset.
 *
 * Since the bitset does not natively support addition we do it manually. 
 * If XOR a bit with 1 leaves it as one then we did not overflow so we can break out
 * otherwise the bit is zero meaning it was previously one which means we have a bit 
 * overflow which must be added 1 to the next bit etc.
 */
void increment(boost::dynamic_bitset<>& bitset)
{
    for(int loop = 0;loop < bitset.count(); ++loop)
    {
        if ((bitset[loop] ^= 0x1) == 0x1)
        {    break;
        }
    }
}
于 2012-04-28T12:41:32.917 に答える
3

すべての可能な組み合わせ?64 ビットの符号なし整数を使用するだけで、作業が楽になります。

于 2012-04-28T11:25:22.827 に答える