php 排列算法
[*]// 排列
[*]function Permutation($arr, $size = 1) {
[*] $len = count($arr);
[*] $start = array_slice(array_keys($arr), 0, $size);
[*] $end = array_reverse(array_slice(array_keys($arr),-$size));
[*] $r_arr = array();
[*] do {
[*] if ( compare($end, $start)=0; $i--) {
[*] if ($arr[$i] + 1 < $max_num) {
[*] $arr[$i]++;
[*] return $arr;
[*] } else {
[*] if ($i == 0) return false;
[*] $arr[$i] = 0;
[*] }
[*] }
[*]}
[*]
[*]// 数组大小比较
[*]function compare ($a, $b) {
[*] for ($i=0; $i$b[$i] ? 1 : -1;
[*] }
[*] }
[*] return 0;
[*]}
[*]
[*]$p = Permutation(array(1,2,3,4,5), 4);
[*]echo '';
[*]print_r($p);
[*]echo '';
[*]exit;
页:
[1]