使用排列查找所有可能的数字集
使用所有数字并允许每个数字计算给定范围内所有可能的数字集只出现一次涉及到排列的数学概念。排列公式计算一组元素的唯一排列或排序的数量。
对于一组 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中文网其他相关文章!