基于PHP的排列组合(如输入a,b,c 输出他们的全部组合)

方法一:
1、假设初始时只有一个字母a,则它的全排列就是a
2、再a的基础上在来一个字母b,则可以将b放在a的前面或后面,这样就有两种排序(a,b)或(b,a)
3、再2的基础上再来一个字母c则c可以放在(a,b)的前中后三个位置(即分别与a,b,c进行交换)形成三个排列(c,b,a)(a,c,b)(a,b,c),也可以放在(b,a)的三个 位置形成三个排列(c,b,a)(b,c,a)(b,a,c)。至此所有字母都已排列完毕。
总结:此处采用的插入排序+递归的思想

//function swap(&a,&b){
// t= a;
// a= b;
// b= t;
//}

function pailiezuhe( arr, begin){
if($begin==0) {

    print_r($arr);
    echo "</br>";
}
if($begin >= count($arr)) return ;
pailiezuhe($arr,$begin+1);
for($i = $begin-1;$i>=0;$i--){
    $t = $arr[$begin];
    $arr[$begin] = $arr[$i];
    $arr[$i] = $t;
    print_r($arr);
    echo "</br>";
    pailiezuhe($arr,$begin +1);
    $t = $arr[$begin];
    $arr[$begin] = $arr[$i];
    $arr[$i] = $t;
}

}
“`

转载于:https://my.oschina.net/u/2563638/blog/709103

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值