n-bit
ワードのバイナリビットパターンの数が、2^n
より小さい任意の制限値以下であるアルゴリズムを探しています。さらに、すべての1-bit
の組み合わせ、2-bit
の組み合わせなどのカウントを生成したいと思います。明らかに、制限が2^n
の場合、2^n
の組み合わせ(C(n,1) 1-bit combinations plus C(n,2) 2-bit plus C(n,3) 3-bit and so on)
があります。ただし、制限が課せられた場合、その組み合わせのすべてが有効ではありません(課された制限よりも小さい)。バイナリビットパターンの組み合わせを集計する
たとえば、n=4
とします。可能な16のビットパターンがあり、そのうちの15ビットは1以上の1-bits
を含む。 10を限度とすると、10より大きいパターンはカウントに含まれません。したがって、単一ビットパターンの場合、有効なビットパターンは0001
,0010
,0100
、および1000
となります。 2ビットのパターンは、0011
,0101
,0110
,1001
となる。パターン1010
および1100
は10を超えているためカウントされません。唯一の3ビットのビットは0111
で、唯一の4ビットパターン1111
は限界を超えています。
F
が私のカウント機能がある場合、F(4,10,1)
は4を返す、C(4,2)
6. n
の実際の値が大きくなる可能性があるためであり、10未満F(4,10,2)
は4を返すている1ビットの4-bit
パターンの数(可能なパターンを列挙し、制限に対してテストし、有効なパターンを数えることは実用的ではありません。
この方法を効率的に行うための考え方はありますか?
優れたアイデア。 OPは彼の質問を非常にうまく説明しているので、私は彼からいくつかの良い提案を期待しています! –