使用排列查找所有可能的數字集
使用所有數字並允許每個數字計算給定範圍內所有可能的數字集只出現一次涉及到排列的數學概念。排列公式計算一組元素的唯一排列或排序的數量。
對於一組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中文網其他相關文章!