/**
- 输入一个字符串,打印出该字符串的所有排列。
- 例如输入字符串abc,则输出由字符a,b,c所能排列出来的所有字符串
- abc、acb、bac、bca、cab和cba
*/
$str = 'abcd';
test3(str_split($str), 0, strlen($str)-1);
function test3(&$arr,$start,$len){
if ($start== $len){
echo join('', $arr),PHP_EOL; //④
}else {
for ($i = $start; $i <= $len; $i++) {
swap($arr[$start], $arr[$i]); //①
test3($arr, $start + 1, $len); //②
swap($arr[$start], $arr[$i]); //③
}
}
}
function swap(&$a, &$b) {
$tmp = $b;
$b = $a;
$a = $tmp;
}
网友评论