字符串全排列(递归)
function permutationStr($str, $tmp = '')
{
$length = strlen($str);
if($length <= 1){
echo $str.$tmp."\n";
}else{
for ($i=0; $i < $length; $i++) {
/* $flag = false;//去除重复
for($j=0; $j < $i; $j++){
if($str[$i] == $str[$j]){
$flag = true;
break;
}
}
if($flag){
continue;
}*/
permutationStr(substr($str, 0, $i).substr($str, $i+1, $length-$i-1), $tmp.$str[$i]);
}
}
}
数组全排列(递归)
function permutation($arr, $tmp = [])
{
$length = count($arr);
if($length <= 1){
echo implode(' ', array_merge($arr, $tmp))."\n";
}else{
for ($i=0; $i < $length; $i++) {
permutation(array_merge(array_slice($arr, 0, $i), array_slice($arr, $i+1, $length-$i-1)), array_merge($tmp, [$arr[$i]]));
}
}
}