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 相关文章推荐
程序员编程十条戒律
Jul 09 PHP
php 全局变量范围分析
Aug 07 PHP
php抓取页面与代码解析 推荐
Jul 23 PHP
PHP数组交集的优化代码分析
Mar 06 PHP
php时区转换转换函数
Jan 07 PHP
浅谈使用 PHP 进行手机 APP 开发(API 接口开发)
Aug 11 PHP
Linux下PHP连接Oracle数据库
Aug 20 PHP
php抽象类用法实例分析
Jul 07 PHP
PHP编程实现微信企业向用户付款的方法示例
Jul 26 PHP
PHP基于Closure类创建匿名函数的方法详解
Aug 17 PHP
PHP流Streams、包装器wrapper概念与用法实例详解
Nov 17 PHP
PHP设计模式概论【概念、分类、原则等】
May 01 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
利用static实现表格的颜色隔行显示的代码
2007/09/02 PHP
ubuntu 编译安装php 5.3.3+memcache的方法
2010/08/05 PHP
PHP strncasecmp字符串比较的小技巧
2011/01/04 PHP
Thinkphp整合微信支付功能
2016/12/14 PHP
PHP 多进程与信号中断实现多任务常驻内存管理实例方法
2019/10/04 PHP
JavaScript 指导方针
2007/04/05 Javascript
JavaScript 读取元素的CSS信息的代码
2010/02/07 Javascript
事件冒泡是什么如何用jquery阻止事件冒泡
2013/03/20 Javascript
javascript中的this详解
2014/12/08 Javascript
浅谈JavaScript 浏览器对象
2016/06/03 Javascript
用js读写cookie的简单方法(推荐)
2016/08/08 Javascript
JavaScript和jQuery获取input框的绝对位置实现方法
2016/10/13 Javascript
js模式化窗口问题![window.dialogArguments]
2016/10/30 Javascript
纯javaScript、jQuery实现个性化图片轮播【推荐】
2017/01/08 Javascript
nest.js 使用express需要提供多个静态目录的操作方法
2019/10/24 Javascript
利用webpack理解CommonJS和ES Modules的差异区别
2020/06/16 Javascript
[48:32]VGJ.T vs Fnatic 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
python获得两个数组交集、并集、差集的方法
2015/03/27 Python
Python生成器(Generator)详解
2015/04/13 Python
详解Python实现按任意键继续/退出的功能
2016/08/19 Python
Python编程之微信推送模板消息功能示例
2017/08/21 Python
JSONLINT:python的json数据验证库实例解析
2017/11/28 Python
python3.X 抓取火车票信息【修正版】
2018/06/19 Python
python爬虫 爬取58同城上所有城市的租房信息详解
2019/07/30 Python
python中字典按键或键值排序的实现代码
2019/08/27 Python
python 爬虫百度地图的信息界面的实现方法
2019/10/27 Python
python+selenium+Chrome options参数的使用
2020/03/18 Python
解决python pandas读取excel中多个不同sheet表格存在的问题
2020/07/14 Python
澳大利亚工具仓库:Tools Warehouse
2018/10/15 全球购物
strlen的几种不同实现方法
2013/05/31 面试题
教师个人工作总结范文2015
2015/10/14 职场文书
《为人民服务》教学反思
2016/02/20 职场文书
《我在为谁工作》:工作的质量往往决定生活的质量
2019/12/27 职场文书
golang 实现两个结构体复制字段
2021/04/28 Golang
Python机器学习之底层实现KNN
2021/06/20 Python
方法汇总:Python 安装第三方库常用
2022/04/26 Python