用php实现的排列组合算法。使用递归算法,效率低,胜在简单易懂。可对付元素不多的情况。
//从$input数组中取$m个数的组合算法 function comb($input, $m) { if($m==1) { foreach($input as $item) { $result[]=array($item); } return $result; } for($i=0;$i<=count($input)-$m;$i++) { $nextinput=array_slice($input,$i+1); $nextresult=comb($nextinput,$m-1); foreach($nextresult as $one) { $result[]=array_merge(array($input[$i]),$one); } } return $result; } //从$input数组中取$m个数的排列算法 function perm($input,$m) { if($m==1) { foreach($input as $item) { $result[]=array($item); } return $result; } for($i=0;$i<count($input);$i++) { $nextinput=array_merge(array_slice($input,0,$i),array_slice($input,$i+1)); $nextresult=perm($nextinput,$m-1); foreach($nextresult as $one) { $result[]=array_merge(array($input[$i]),$one); } } return $result; } $input=array(1,2,3,4,5); print_r(comb($input,3)); print_r(perm($input,3));