固定長のビット配列とそれに含まれる 0 と 1 の数が与えられた場合、i 番目の組み合わせを返すのにできるだけ時間がかからないように、考えられるすべての組み合わせをどのように配置できますか? それらが返される順序は重要ではありません。
次に例を示します。
array length = 6
number of 0s = 4
number of 1s = 2
可能な組み合わせ (6! / 4! / 2!) 000011 000101 000110 001001 001010 001100 010001 010010 010100 011000 100001 100010 100100 101000 110000
問題 1番目の組み合わせ = 000011 5番目の組み合わせ = 001010 9番目の組み合わせ = 010100
100001 100010 100100 101000 110000 001100 010001 010010 010100 011000 000011 000101 000110 001001 001010 のように異なる配置で
1 番目の組み合わせ = 100001 5 番目の組み合わせ = 110000 9 番目の組み合わせ = 010100 を返します。
現在、各ビットが 1 か 0 かをテストする O(n) アルゴリズムを使用しています。問題は、非常に長い配列 (10000 ビットのオーダー) を大量に処理する必要があるため、遅い(そしてキャッシングは問題外)。より高速なアルゴリズムが存在する可能性があると思われるかどうかを知りたい.
ありがとうございました