基于PHP的排列组合(如输入a,b,c 输出他们的全部组合)
2016-03-24 18:25
766 查看
方法一:
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,&a,&b){
// t=t = a;
// a=a = b;
// b=b = t;
//}
function pailiezuhe(arr,arr,begin){
if($begin==0) {
}
“`
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,&a,&b){
// t=t = a;
// a=a = b;
// b=b = t;
//}
function pailiezuhe(arr,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; }
}
“`
相关文章推荐
- 使用PHP创建SOCKET服务
- php 对二维数组的某个键的值进行排序
- php之工厂模式和抽象工厂
- [PHP实例] 一个PHP缓存类
- FTP多用户登录
- vsftpd文件传输 、 Samba共享服务
- PHP日期与时间
- phpstorm + xampp 配置
- thinkphp设置session有效时间
- 自建小站之路:文件上传$_FILES参数类型
- PHP移动文件指针ftell()、fseek()、rewind()函数总结
- PHPmailer For THINKPHP
- PHP set_error_handler()函数的使用之二
- php时间日期处理
- PHP操作SQLITE
- ftp连接不上的问题
- PHP随机显示mysql数据库中的数据
- PHP set_error_handler()函数的使用之一
- php的cURL库介绍
- MicrosoftProjectOxford 微软牛津计划