求数字组合算法解决方案

求数字组合算法
假设有4个数字
1,2,3,4
要求其中三个数字的排列,但不能重复。
例如组合:123,124,134,234。
其中 123 的组合和213,312,321,132,231 的组合都是一样的。
怎么实现?小弟菜鸟,在线等,谢谢!


------解决方案--------------------
上面有错
for($i=1;$i <=5-2;$i++){
for($j=$i+1;$j <=5-1;$j++){
for($k=$j+1;$k <=5;$k++){
echo "$i,$j,$k
";

}
}
}

------解决方案--------------------
/**
* 函数 combination
* 功能 m取n的组合函数
* 参数
* $ar 数组,原始数据
* $num 数值,每个组合的元素个数
**/
if(! function_exists( 'combination ')):
function combination($ar, $num) {
$control = range(0, $num-1);
$k = false;
$total = count($ar);
while($control[0] < $total-($num-1)) {
$t = array();
for($i=0; $i <$num; $i++) $t[] = $ar[$control[$i]];
$r[] = $t;

for($i=$num-1; $i> =0; $i--) {
$control[$i]++;
for($j=$i; $j <$num-1; $j++) $control[$j+1] = $control[$j]+1;
if($control[$i] < $total-($num-$i-1)) break;
}
}
return $r;
}
endif;

/** 示例 **/
print_r(combination(array(1,2,3,4,5), 3));

郑重声明:本文版权包含图片归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们(delete@yzlfxy.com)修改或删除,多谢。

郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。

留言与评论(共有 0 条评论)
昵称:
匿名发表
   
验证码: