实例如下:
<?php
/*分治法——直接选择
比如说a b c
首先将a之后的字符依次与a进行交换
1 b,a,c
2 c,b,a
注意这里少了一个原始数据 a,b,c。需要把原始数据也算如排列中
3 a,b,c
然后把字符移到第二个位置,将第二个位置之后的数分别与第二个位置的数进行交换
1 b,a,c ===> 11 b,c,a
2 c,b,a ===> 21 c,a,b
3 a,b,c ===> 31 a,c,b
**/
function zuhe($arr,$begin){
if(!is_array($arr)) return ;
$N = count($arr);
if($begin == $N-1 || $begin >$N || $begin <0) return ;
if($begin == 0){
print_r($arr);//输出原始数据
echo '</br>';
}
//循环将初始值与第i个值交换后进行组合
for($i = $begin;$i < $N;$i++){
$t = $arr[$begin];
$arr[$begin] = $arr[$i];
$arr[$i] = $t;
if($i!==$begin){//i==begin时的数已经输出过
print_r($arr);
echo '</br>';
}
zuhe($arr,$begin+1);
$t = $arr[$begin];
$arr[$begin] = $arr[$i];
$arr[$i] = $t;
}
}
$arr = array('a','b','c','d');
//zuhe($arr,0);
/*分治法——直接插入
初始时从0个元素开始,输出初始序列,为组合的一个序列
当在来一个元素时只需将该元素放在该元素之前的元素组的不同的位置即组成了不同的排列
如已有元素组为a,b.新元素为c,把c分别与a,b进行交换即可(a,c,b);(c,b,a),在现有的排列上在新增元素
重复执行以上步骤
*/
function zuhe2($arr,$begin){
if($begin==0) {
print_r($arr);
echo "</br>";
//zuhe2($arr,$begin+1);
}
if($begin >= count($arr)) return ;
zuhe2($arr,$begin+1);//begin时的排列上一次已产生,直接新增元素
for($i = $begin-1;$i>=0;$i--){
$t = $arr[$begin];
$arr[$begin] = $arr[$i];
$arr[$i] = $t;
print_r($arr);
echo "</br>";
zuhe2($arr,$begin +1);
$t = $arr[$begin];
$arr[$begin] = $arr[$i];
$arr[$i] = $t;
}
}
以上这篇浅谈PHP的排列组合(如输入a,b,c 输出他们的全部组合)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。
# php排列组合
# PHP实现的简单排列组合算法应用示例
# php全排列递归算法代码
# 使用php计算排列组合的方法
# php通过排列组合实现1到9数字相加都等于20的方法
# php求数组全排列
# 元素所有组合的方法总结
# PHP输出多个元素的排列或组合的方法
# 元素所有组合的方法
# PHP实现基于图的深度优先遍历输出1
# 2
# 3...n的全排列功能
# PHP实现字符串的全排列详解
# php实现的生成排列算法示例
# 第二个
# 给大家
# 原始数据
# 治法
# 他们的
# 放在
# 已有
# 只需
# 希望能
# 少了
# 这篇
# 也算
# 浅谈
# 移到
# 将该
# 小编
# 大家多多
# 排列组合
# background
# color
相关文章:
如何彻底卸载建站之星软件?
公司网站建设制作费用,想建设一个属于自己的企业网站,该如何去做?
哈尔滨网站建设策划,哈尔滨电工证查询网站?
如何用5美元大硬盘VPS安全高效搭建个人网站?
完全自定义免费建站平台:主题模板在线生成一站式服务
测试制作网站有哪些,测试性取向的权威测试或者网站?
韩国网站服务器搭建指南:VPS选购、域名解析与DNS配置推荐
如何设置并定期更换建站之星安全管理员密码?
简单实现Android文件上传
已有域名如何快速搭建专属网站?
Dapper的Execute方法的返回值是什么意思 Dapper Execute返回值详解
北京建设网站制作公司,北京古代建筑博物馆预约官网?
如何通过西部数码建站助手快速创建专业网站?
建站为何优先选择香港服务器?
建站之星导航菜单设置与功能模块配置全攻略
MySQL查询结果复制到新表的方法(更新、插入)
大型企业网站制作流程,做网站需要注册公司吗?
小程序网站制作需要准备什么资料,如何制作小程序?
已有域名如何免费搭建网站?
,怎么用自己头像做动态表情包?
建站之星展会模版如何一键下载生成?
如何在建站主机中优化服务器配置?
如何高效配置IIS服务器搭建网站?
如何在IIS中配置站点IP、端口及主机头?
建站之星多图banner生成与模板自定义指南
设计网站制作公司有哪些,制作网页教程?
如何通过远程VPS快速搭建个人网站?
C#怎么创建控制台应用 C# Console App项目创建方法
全景视频制作网站有哪些,全景图怎么做成网页?
制作网站哪家好,cc、.co、.cm哪个域名更适合做网站?
网站制作中优化长尾关键字挖掘的技巧,建一个视频网站需要多少钱?
如何选择高效稳定的ISP建站解决方案?
如何使用Golang安装API文档生成工具_快速生成接口文档
如何在阿里云服务器自主搭建网站?
如何在建站宝盒中设置产品搜索功能?
音响网站制作视频教程,隆霸音响官方网站?
建站之星如何实现PC+手机+微信网站五合一建站?
如何在新浪SAE免费搭建个人博客?
外贸公司网站制作哪家好,maersk船公司官网?
c# 在高并发场景下,委托和接口调用的性能对比
如何通过虚拟机搭建网站?详细步骤解析
江苏网站制作公司有哪些,江苏书法考级官方网站?
企业网站制作公司网页,推荐几家专业的天津网站制作公司?
手机网站制作平台,手机靓号代理商怎么制作属于自己的手机靓号网站?
nginx修改上传文件大小限制的方法
如何在七牛云存储上搭建网站并设置自定义域名?
Swift开发中switch语句值绑定模式
如何在香港免费服务器上快速搭建网站?
再谈Python中的字符串与字符编码(推荐)
如何快速上传建站程序避免常见错误?
*请认真填写需求信息,我们会在24小时内与您取得联系。