如何获取规定的排列组合

题目描述:

将一组数字、字母或符号进行排列,以得到不同的组合顺序,如 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 "\n";
    }
}

程序的运行结果为

1234
1243
1324
1342
1423
1432
2134
2143
2314
2341
2413
2431
3124
3142
3214
3241
3412
3421
4123
4132
4213
4231
4312
4321
posted @ 2020-05-27 09:44  橙宝技术  阅读(213)  评论(0编辑  收藏  举报