21,887
社区成员
发帖
与我相关
我的任务
分享
function Combination( $arr, $num=0) {
$arr = array_values($arr);
$len = count($arr);
if($num <= 0 || $num > $len) $num = $len;
$res = array();
for($i=1,$n=pow(2, $len); $i<$n; ++$i) {
$tmp = str_pad(base_convert($i, 10, 2), $len, '0', STR_PAD_LEFT);
$t = array();
for($j=0; $j<$len; ++$j) {
if($tmp{$j} == '1') {
$t[] = $arr[$j];
}
}
if(count($t) == $num) $res[] = $t;
}
return $res;
}