原文链接 http://blog.shuxuemi.cn/web/index/detail/16

// 全排
function fullArrange(&$arr, $index)
{if ($index == 0) {return [$arr[0]];} else {$rows = fullArrange($arr, $index - 1);$temp_len = count($rows);$temp_arr = [];for ($k = 0; $k < $temp_len; $k++) {$row = $rows[$k];for ($j = 0; $j <= strlen($row); $j++) {$str = substr($row, 0, $j) . $arr[$index] . substr($row, $j);$temp_arr[] = $str;}}return $temp_arr;}
}// 全组合
function fullCombine($arr, $index)
{if ($index == 0) {return [$arr[0]];} else {$rows = fullCombine($arr, $index - 1);$temp_len = count($rows);$rows[] = $arr[$index];for ($k = 0; $k < $temp_len; $k++) {$rows[] = $rows[$k] . $arr[$index];}return $rows;}
}//$arr = "abc";
//$arranges = fullArrange($arr, 2);
//$combines = fullCombine($arr, 2);
//print_r($arranges);
//print_r($combines);

排列组合算法(全排列、全组合)相关推荐

  1. 组合算法/全排列算法/求子集算法

    本文介绍组合算法,组合算法有很多,这里只介绍其中一种的两种形式. 全排列:全排列算法 组合:本文 子集算法:求子集算法 组合 leetcode实战:组合 给定两个整数 n 和 k,返回范围 [1, n ...

  2. 泰语字库,泰文字库,泰文组合算法,泰语组合算法

    字库交流QQ:2229691219 1.字母编码 这里只介绍泰文的Unicode编码.Unicode编码为双字节,前面为高字节,后面为低字节,这里都用十六进制表示.如0E00表示一个空格,0E为高字节 ...

  3. 算法之排列与组合算法

    1. 前言 本文介绍了常用的排列组合算法,包括全排列算法,全组合算法,m个数选n个组合算法等. 2. 排列算法 常见的排列算法有: (A)字典序法 (B)递增进位制数法 (C)递减进位制数法 (D)邻 ...

  4. 排列组合n选m,组合算法——0-1转换算法(巧妙算法)C++实现

    知识储备 1.排列 排列的定义:从n个不同元素中,任取m(m≤n,m与n均为自然数,下同)个元素按照一定的顺序排成一列,叫做从n个不同元素中取出m个元素的一个排列:从n个不同元素中取出m(m≤n)个元 ...

  5. 排列 组合 算法(一)

    排列组合算法 我们都知道排列与组合的个数可以利用公式很容易的求出来,但是要是把这些排列组合的序列一一输出怎么办呢? 下面结合<组合数学>(第四版)卢开澄卢华明编著,好好总结排列与组合的算法 ...

  6. python实现高效率的排列组合算法

    组合算法 本程序的思路是开一个数组,其下标表示1到m个数,数组元素的值为1表示其下标 代表的数被选中,为0则没选中. 首先初始化,将数组前n个元素置1,表示第一个组合为前n个数. 然后从左到右扫描数组 ...

  7. 高效率的全组合算法(Java版实现)

    我不是生产者,我只是大佬的搬运工 =.= 算法描述: 算法说明:当n大于2时,n个数的全组合一共有(2^n)-1种. 当对n个元素进行全组合的时候,可以用一个n位的二进制数表示取法. 1表示在该位取, ...

  8. 全排列、全组合 java实现

    全排列 所谓全排列就是根据输入字符打印出所有字符的排列方式(分次序).例如输入abc,所有排序的结果有,abc,cba,bac,cab,acb,bca 共6种情况.对于全排列,如果用循环的方法,需要O ...

  9. 终于有个高效率的排列组合算法

    1.最近一直在考虑从m个数里面取n个数的算法.最容易理解的就是递归,但是其效率,实在不能使用.一直找寻中,今日得果 2.算法来源与互联网 组合算法     本程序的思路是开一个数组,其下标表示1到m个 ...

最新文章

  1. 《今日简史》读书笔记(未完待续)
  2. python能做什么
  3. 一行代码值 200 万?雷军公开小米新 Logo 引吐槽
  4. Emit动态代理.NetCore迁移之旅
  5. C++ 内存分配层次以及memory primitives的基本用法
  6. Mybatis-puls打印sql语句
  7. linux dhcp服务软包,dpkg包管理器详解
  8. 用java统计任一书名次数_Java入门第三季 借书系统源代码 加入了限制重输次数 欢迎指教交流...
  9. rx java定时循环_Rxjava定时器异常循环
  10. 分割字符串函数strtok
  11. 自己闲着没事整理的人工智能的思维导图
  12. Java Swing基本使用
  13. eclipse中文包和控制台中文显示乱码
  14. 复化科特斯公式matlab_牛顿科特斯公式要点分析.ppt
  15. 常见的游戏有哪些分类?
  16. TS封装格式小白入门分析总结(二)之工具的使用
  17. 库克牛津大学演讲:AR 比 VR更深刻,领导力就是让沉默的人说话
  18. 使用nim master为oracle2分区安装os,使用 NIM 资源部署自定义的 AIX 系统
  19. 复旦大学计算机科学与技术分数,2015年复旦大学计算机科学与技术考研复试分数线是320分...
  20. TDengine极简实战:从采集到入库,从前端到后端,体验物联网设备数据流转

热门文章

  1. python解码报错,gbk和utf-8都不行了
  2. 自动抓取QQ好友列表?Windows UIA教你轻松实现
  3. 信息技术是指利用电子计算机和现代通信手段实现获取、传递、存储、处理、显示、分配信
  4. 电大计算机画图程序属性,电大计算机绘图(本)复习大全.doc
  5. patch 和 put 方法区别
  6. request与response的用法
  7. Java实现百万并发(整理)
  8. C++文件流fstream相关操作
  9. 【译】前端开发者的基本要求
  10. java 打印出如下图案(菱形)