2

PHP で、ビット数を指定して、これらのビットの可能なすべての組み合わせを含む配列を取得したいと考えています。

例:

number: 3
000
001
010
011
etc...

もともと文字列用に設計された再帰アルゴリズムを試したので、アルゴリズムが遅すぎます。

これを行う最も効率的な方法は何ですか?

4

1 に答える 1

6

ビットの良いところは、ビットを使って本当に簡単なことを実行できることです。3 ビットが必要な場合は、たまたま 8-1 になる 7 つの数字があります。4 ビットが必要な場合は、15 個の数字があり、たまたま 16-1 になります。この素晴らしい事実を利用して、コードをシンプルにします。

$bits = 4;
$max = (1 << $bits);

for ($i = 0; i < $max; $i++) {
    // Use $i
    // echo str_pad(decbin($i), $bits, '0', STR_PAD_LEFT);
}
于 2012-12-25T11:28:02.217 に答える