用php實現的排列組合算法。使用遞歸算法,效率低,勝在簡單易懂。可對付元素很少的狀況。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));