php求数组全排列,元素所有组合的方法总结


Posted in PHP onMarch 14, 2017

本文实例讲述了php求数组全排列,元素所有组合的方法总结。

分享给大家供大家参考,具体如下:

<?php
$source = array('pll','我','爱','你','嘿');
sort($source); //保证初始数组是有序的
$last = count($source) - 1; //$source尾部元素下标
$x = $last;
$count = 1; //组合个数统计
echo implode(',', $source), "<br>"; //输出第一种组合
while (true) {
 $y = $x--; //相邻的两个元素
 if ($source[$x] < $source[$y]) { //如果前一个元素的值小于后一个元素的值
  $z = $last;
  while ($source[$x] > $source[$z]) { //从尾部开始,找到第一个大于 $x 元素的值
   $z--;
  }
  /* 交换 $x 和 $z 元素的值 */
  list($source[$x], $source[$z]) = array($source[$z], $source[$x]);
  /* 将 $y 之后的元素全部逆向排列 */
  for ($i = $last; $i > $y; $i--, $y++) {
   list($source[$i], $source[$y]) = array($source[$y], $source[$i]);
  }
  echo implode(',', $source), "<br>"; //输出组合
  $x = $last;
  $count++;
 }
 if ($x == 0) { //全部组合完毕
  break;
 }
}
echo 'Total: ', $count, "\n";
?>

以上这篇php求数组全排列,元素所有组合的方法总结就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

PHP 相关文章推荐
php基础知识:类与对象(3) 构造函数和析构函数
Dec 13 PHP
Zend 输出产生XML解析错误
Mar 03 PHP
php执行sql语句的写法
Mar 10 PHP
php 无限级数据JSON格式及JS解析
Jul 17 PHP
不重新编译PHP为php增加openssl模块的方法
Jun 14 PHP
php设计模式 Observer(观察者模式)
Jun 26 PHP
解析php函数method_exists()与is_callable()的区别
Jun 21 PHP
php获取mysql字段名称和其它信息的例子
Apr 14 PHP
PHP中使用asort进行中文排序失效的问题处理
Aug 18 PHP
Laravel 5 框架入门(四)完结篇
Apr 09 PHP
php中final关键字用法分析
Dec 07 PHP
在 Laravel 中动态隐藏 API 字段的方法
Oct 25 PHP
PHP输出多个元素的排列或组合的方法
Mar 14 #PHP
Linux下快速搭建php开发环境
Mar 13 #PHP
php创建图像具体步骤
Mar 13 #PHP
PHP+MYSQL实现读写分离简单实战
Mar 13 #PHP
PHP计算近1年的所有月份
Mar 13 #PHP
PHP解耦的三重境界(浅谈服务容器)
Mar 13 #PHP
PHP控制反转(IOC)和依赖注入(DI)
Mar 13 #PHP
You might like
浅析is_writable的php实现
2013/06/18 PHP
PHP+memcache实现消息队列案例分享
2014/05/21 PHP
PDO防注入原理分析以及使用PDO的注意事项总结
2014/10/23 PHP
Symfony的安装和配置方法
2016/03/17 PHP
thinkphp在php7环境下提示Cannot use ‘String’ as class name as it is reserved的解决方法
2016/09/30 PHP
laravel实现简单用户权限的示例代码
2019/05/28 PHP
JavaScript性能优化 创建文档碎片(document.createDocumentFragment)
2010/07/13 Javascript
jQuery 源码分析笔记(5) jQuery.support
2011/06/19 Javascript
js不完美解决click和dblclick事件冲突问题
2012/07/16 Javascript
Javascript单元测试框架QUnitjs详细介绍
2014/05/08 Javascript
让IE8浏览器支持function.bind()方法
2014/10/16 Javascript
js实现宇宙星空背景效果的方法
2015/03/03 Javascript
JavaScript动态插入CSS的方法
2015/12/10 Javascript
谈一谈javascript中继承的多种方式
2016/02/19 Javascript
Bootstrap每天必学之滚动监听
2016/03/16 Javascript
vue 纯js监听滚动条到底部的实例讲解
2018/09/03 Javascript
微信小程序与后台PHP交互的方法实例分析
2018/12/10 Javascript
vue实现codemirror代码编辑器中的SQL代码格式化功能
2019/08/27 Javascript
微信小程序 动态修改页面数据及参数传递过程详解
2019/09/27 Javascript
vue如何使用外部特殊字体的操作
2020/07/30 Javascript
JavaScript实现图片放大预览效果
2020/11/02 Javascript
[51:15]完美世界DOTA2联赛PWL S2 PXG vs Magma 第一场 11.21
2020/11/24 DOTA
完美解决python遍历删除字典里值为空的元素报错问题
2016/09/11 Python
python中urllib.unquote乱码的原因与解决方法
2017/04/24 Python
Python使用selenium实现网页用户名 密码 验证码自动登录功能
2018/05/16 Python
基于wxPython的GUI实现输入对话框(1)
2019/02/27 Python
如何在windows下安装Pycham2020软件(方法步骤详解)
2020/05/03 Python
CSS3新增布局之: flex详解
2020/06/18 HTML / CSS
HTML5 progress和meter控件_动力节点Java学院整理
2017/07/06 HTML / CSS
暑期实践思想汇报
2014/01/06 职场文书
幼儿园安全检查制度
2014/01/30 职场文书
保护环境的标语
2014/06/09 职场文书
教师党员自我评价2015
2015/03/04 职场文书
2016年万圣节活动总结
2016/04/05 职场文书
七年级之家长会发言稿范文
2019/09/04 职场文书
在windows server 2012 r2中安装mysql的详细步骤
2022/07/23 Servers