n选m的组合的 php实现
原理:http://xiaomage.blog.51cto.com/293990/74094/
function cs($n, $m) {
if ($n == $m) {
return array(array_fill(0, $m, 1));
}
$rs = array();
$arr = array_merge(array_fill(0, $m, 1), array_fill(0, $n - $m, 0));
$rs[] = $arr;
while (true) {
$str = implode('', $arr);
$pos = strpos($str, '10');
if ($pos === false) {
break;
} else {
if ($pos > 1) {
$tmp = array_slice($arr, 0, $pos);
rsort($tmp);
array_splice($arr, 0, $pos, $tmp);
}
$arr[$pos] = 0;
$arr[$pos + 1] = 1;
$rs[] = $arr;
}
}
return $rs;
}
$rs = cs(5, 3);
print