$a = array(a,b,c,d,e,f,g,h,i,j,k,l);
将$a这个数组中的元素分成6个一组,计算出他们的组合结果,如:
abcdef
abcdeg
abcdeh
abcdei
abcdej
abcdek
abcdel
abcdfg
abcdfh
......
请高手们帮帮忙。
将$a这个数组中的元素分成6个一组,计算出他们的组合结果,如:
abcdef
abcdeg
abcdeh
abcdei
abcdej
abcdek
abcdel
abcdfg
abcdfh
......
请高手们帮帮忙。
* 函数 combination
* 功能 m取n的组合函数
**/
if(! function_exists('combination')):
function combination($ar, $k, $m=0, $a=array()) {
static $ret = array();
if($m == 0) {
$m = count($ar);
$ret = array();
}
for($i=$m; $i>=$k; $i--) {
$a[$k-1] = $ar[$i-1];
if($k > 1) {
combination(&$ar, $k-1, $i-1, $a);
}else {
array_unshift ($ret, array_reverse($a));
}
}
return $ret;
}
endif;
$ar = combination($a, 6);
static $a = array(a,b,c,d,e,f,g,h,i,j,k,l);
$max = count($a);
$n = 6;
$work = array(0,1,2,3,4,5);$complated = false;
do
{
for ($i=0; $i<count($work); $i++)
{
echo $a[$i];
}
echo "<br \>";
$j=count($work)-1;
while($j>0 && $work[$j]>=count($a)-count($work)+$j)
{
$j--;
}
if ($j >= 0)
{
++$work[$j];
for ($k=$j+1; $k<count($work); $k++)
{
$wokr[$k] = $work[$j]+$k - $j;
}
}
else
{
$complated = true;
}}while(!$complated);?>