順列を使用したすべての可能な数値セットの検索
すべての数値を使用し、各数値を使用して、指定された範囲から可能なすべての数値セットを計算します。一度だけ現れるには、順列という数学的概念が含まれます。順列式は、要素のセットの一意の配置または順序の数を計算します。
n 個の数値のセットの場合、n! n の階乗 (n (n-1) (n-2) ... * 1) を表し、順列の総数は次の式で与えられます。
nPk = n!/(n-k)!
この例では、この場合、9 つの数値があり、それらをすべて選択すると (k=n)、順列の数は次のようになります。
9P9 = 362,880
これらの順列を生成するにはPHP では、O'Reilly の「PHP Cookbook」で提供されているこの関数を使用できます。
function pc_permute($items, $perms = array( )) { if (empty($items)) { print join(' ', $perms) . "\n"; } else { for ($i = count($items) - 1; $i >= 0; --$i) { $newitems = $items; $newperms = $perms; list($foo) = array_splice($newitems, $i, 1); array_unshift($newperms, $foo); pc_permute($newitems, $newperms); } } }
この関数を次のような数値のセットで呼び出すと、
pc_permute(array(0, 1, 2, 3, 4, 5, 7, 8));
が出力されます。提供されている例を含む、考えられるすべての順列:
0-1-2-3-4-5-6-7-8 0-1-2-3-4-5-6-8-7 0-1-2-3-4-5-8-6-7 0-1-2-3-4-8-5-6-7 0-1-2-3-8-4-5-6-7 0-1-2-8-3-4-5-6-7 ...
以上が与えられた一連の数値に対して順列はいくつ存在しますか?また、それらは PHP でどのように生成できるのでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。