基于PHP的排列组合(如输入a,b,c 输出他们的全部组合)
2016-07-09 00:00
671 查看
方法一:
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) {
}
“`
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; }
}
“`
相关文章推荐
- 基数排序的PHP实现
- php字符串翻转
- PHP 中的魔术方法记录
- 使用 trait 时报PHP Parse error: syntax error, unexpect
- 单元测试phpunit安装及使用实例
- Day9作业:socket之FTP工具
- Discuz X3.2实现手机号登录
- 异曲同工之妙之java虚拟机和php内核
- H.264之编码格式-封装成MP4格式-视频流 RTP封包
- php rabbitmq操作类及生产者和消费者实例代码
- yii2-国际化,可参考开发文档权威指南-国际化
- php 上传文件 cvs文件
- PHP面向对象知识总结
- H264 RTP封包原理(转载)
- 切莫让CDN缓存你的动态文件
- php中将12567890装化为1,234,567,890
- 将一个字符串(1234567890)转换成(1,234,567,890)每三个一组用逗号隔开
- 写一个方法,将一个字符串(1234567890)转换成(1,234,567,890)每三个一组用逗号隔开()
- laravel中邮件的发送以及model的使用
- Yii 2 load() 和 save()