<?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";
?>

转载于:https://www.cnblogs.com/zonglonglong/p/4582452.html

php数组全排列,元素所有组合相关推荐

  1. php 求数组组合数,php实现求数组全排列,元素所有组合的方法

    下面小编就为大家带来一篇php求数组全排列,元素所有组合的方法总结.小编觉得挺不错的,现在就分享给大家,也给大家做个参考.一起跟随小编过来看看吧 本文实例讲述了php求数组全排列,元素所有组合的方法总 ...

  2. 多个数组间元素排列组合问题求解(Java实现)

    求多个数组之间元素的排列组合问题,方法有两个:递归法.循环法. 首先应该认识到的是: 所有可以用递归实现的操作都可以转化为用while.for等循环实现. 递归法 优缺点: 数组数量不太多时用递归法确 ...

  3. C#求数组中元素的全排列

    2019独角兽企业重金招聘Python工程师标准>>> 1.算法描述 全排列的第一项是该数组的升序排列,最后一项是该数组的降序排列.本文中用到的了一个函数FindNextArray: ...

  4. B09_NumPy迭代数组(控制遍历顺序,修改数组中元素的值,使用外部循环,广播迭代)

    NumPy迭代数组 NumPy 迭代器对象 numpy.nditer 提供了一种灵活访问一个或者多个数组元素的方式. 迭代器最基本的任务的可以完成对数组元素的访问. 接下来我们使用arange()函数 ...

  5. C语言中 二维数组在内存中的存放顺序是,在计算机中二维数组的元素是按行顺序存放的,即在内存中,先顺序存放二维数组第一行的元素,再顺序存放二维数组第二行的元素,以此类推 答案:对...

    相关问题 服装时尚流行趋势包含哪些元素 中国大学MOOC: 在本征半导体中掺入三价元素的杂质半导体的自由电子是( ). 下列说法正确的有( ).: 说法 逻辑 关系 上 数据 结构 类 线性 结构 结 ...

  6. c# 循环给数组每个元素加个逗号_C#规范整理集合和Linq

    LINQ(Language Integrated Query,语言集成查询)提供了类似于SQL的语法,能对集合进行遍历.筛选和投影.一旦掌握了LINQ,你就会发现在开发中再也离不开它.   开始! 前 ...

  7. Java计算数组中元素的总和

    数组元素的总和是指数组中所有元素(或数字)的总和.数组元素可以是整数(int)或十进制数字(float或double). 方法1:使用for循环 这是一种传统且最常用的方法,其中使用for循环来迭代数 ...

  8. Elastic实战:nested查询与数组同一元素匹配多个值

    0. 引言 之前有同学实际生产中遇到了一个问题,题目本身不涉及生产环境上的问题,纯粹的DSL,但是因为是实际数据,因此数据量上会大很多,也增加了排错的难度.下面我们具体看下这个问题,让大家具体体会下实 ...

  9. 二维数组排序 java_java二维数组全排列

    java 数组全排列 /** * 递归 * @param strJaggedArray 需要递归的二维数组 * @return 最终返回的字符串数组 */ private static String[ ...

最新文章

  1. 运用层通过shell脚本直接操控gpio
  2. tcp/ip详解--ttl
  3. Leetcode 189. 旋转数组 解题思路及C++实现
  4. python 模块(Module)和包
  5. Java对象序列化详解
  6. ubuntu终端显示乱码的解决
  7. QT的QMaterial类的使用
  8. IplImage* cvmat* mat 释放
  9. 作者:肖戎(1974-),女,广东省地方税务局高级工程师、副处长。
  10. 中职读计算机什么专业好,读职校选择什么专业好一些
  11. Mongodb-副本集
  12. vice versa VS the other way around
  13. 【温故而知新-Javascript】使用canvas元素(第一部分)
  14. Dubbo中多注册中心问题与服务分组
  15. WhiteSmoke无限试用
  16. traceroute 详解及结果出现*的分析
  17. Win10 扩展显示器后窗口不显示问题
  18. oauth2-怎么使用
  19. 文章展示从数据库到前端页面实现部分展示
  20. ipv6无网络访问权限怎么办

热门文章

  1. C语言位操作符的使用
  2. 解读Java Class文件格式
  3. mysql表内增加一个字段并赋值
  4. 什么情况下应不建或少建索引
  5. golang中的fallthrough
  6. shell实例第18讲:利用gzexe加密shell脚本
  7. 枚举enum与#define 宏的区别?
  8. mybaits六:参数处理
  9. linux系统管理命令,压缩命令
  10. 第九课 特殊权限set_uid、stick_bit,软链接,硬链接