1-7之间的所有组合,没有任何重复

时间:2013-11-14 11:11:57

标签: php

我在PHP take all combinations

找到了这个

我进一步修改它以包含给定数组的n个集合。但是,我无法弄清楚如何在一组中没有任何重复的数字。例如

如果输出

1,1,3,4

然后它应该删除额外的'1'并将其作为

1,3,4

同样如果有2个输出。

1,3,4,5和4,5,3,1

然后它也应该删除其中一个重复集。

我尝试使用array_unique并认为它可以解决一半的问题,但它会造成内存分配错误。

<?php

function permutations($arr,$n)
{
 $res = array();

 foreach ($arr as $w)
 {
       if ($n==1) $res[] = $w;
       else
       {
             $perms = permutations($arr,$n-1);

             foreach ($perms as $p)
             {
                  $res[] = $w." ".$p;
             } 
       }
 }

 return $res;
}

// Your array
$numbers = array(1,2,3,4,5,6,7);

// Get permutation by groups of n elements
for($i=1; $i<8; $i++)
$pe = permutations($numbers,$i);
$pe = array_unique($pe);
// Print it out
print_r($pe);

?>

0 个答案:

没有答案