不知道该怎么解释.但是也许下面的例子可以使您理解我的问题所在.
示例:
我有一个包含3个元素的数组.
$elements = array( 'A', 'B', 'C' );排列为3的3.因此结果为:
A-B-C ; A-C-B ; B-A-C ; B-C-A ; C-A-B; C-B-A我不希望任何三分之二的排列或三分之一的排列,例如示例中所示的三分之三.因此,如果我在一个数组中有4个元素,则排列为4中的4.依此类推...
(我认为排列的数目是3!= 1 * 2 * 3 = 6个排列,4!= 1 * 2 * 3 * 4 = 24个排列...这就是为什么我称之为阶乘排列的原因.)
如果还有其他与我的问题类似的问答,请让我知道
解决方案使用递归函数:
function permutations($elements) { if(count($elements)<2) return $elements; $newperms= array(); foreach($elements as $key=>$element) { $newelements= $elements; unset($newelements[$key]); $perms= permutations($newelements); foreach($perms as $perm) { $newperms[]= $element."-".$perm; } } return $newperms; }没有测试过,所以仍然可以为您工作;-)
Don't know how to explain. But maybe example below will be make you understandable what my problem is.
Example :
I have an array with 3 elements.
$elements = array( 'A', 'B', 'C' );The permutation will be 3 in 3. so the result are :
A-B-C ; A-C-B ; B-A-C ; B-C-A ; C-A-B; C-B-AI don't want any permutation 2 in 3 or 1 in 3, just 3 in 3 as you can see in example. So if I have 4 elements in an array, the permutation is 4 in 4. and so on...
(I think the number of permutations is 3! = 1*2*3 = 6 permutations, 4! = 1*2*3*4 = 24 permutations... that why I call Permutations of Factorial.)
If there are other question and answer similar to my problem, please let me know
解决方案Use a recursive function:
function permutations($elements) { if(count($elements)<2) return $elements; $newperms= array(); foreach($elements as $key=>$element) { $newelements= $elements; unset($newelements[$key]); $perms= permutations($newelements); foreach($perms as $perm) { $newperms[]= $element."-".$perm; } } return $newperms; }Didn't test it, so there is still work for you ;-)
更多推荐
PHP中阶乘的置换
发布评论