题目描述:
将一组数字、字母或符号进行排列,以得到不同的组合顺序,如 1、2、3 这三个数的排列组合有:123、132、213、231、312 和 321。
实现代码如下:
<?php
define("N",4);
$numArr = [];
for($i = 1; $i<=N; $i++){
$numArr[$i] = $i;
}
perm($numArr, 1);
function perm($num, $i){
if($i < N){
for($j = $i; $j <= N; $j++){
$tmp = $num[$j];
for($k = $j; $k > $i; $k--){
$num[$k] = $num[$k-1];
}
$num[$i] = $tmp;
perm($num, $i+1);
for($k = $i; $k < $j; $k++){
$num[$k] = $num[$k+1];
}
$num[$j] = $tmp;
}
}else{
for($j = 1; $j <= N; $j++){
echo $num[$j];
}
echo "
";
}
}
程序的运行结果为
1234
1243
1324
1342
1423
1432
2134
2143
2314
2341
2413
2431
3124
3142
3214
3241
3412
3421
4123
4132
4213
4231
4312
4321