全排列组合算法,例如a,b,c,d进行全排列组合,则组合结果为:a,b,ab,c,ac,bc,abc,d,ad,bd,abd,cd,acd,bcd,abcd。实现思路:从数据源拿出一个元素,依次与已存在的组合数据进行组合,循环上面操作直到数据源没有数据为止。

例子:

数据源a,b,c

1.拿出a,组合数据group为空,插入数据源a元素到组合数据group,此时group=[a]

2.拿出b,组合数据group拿出a,a和b组合,得到ab,把数据源b元素、ab插入组合数据group,此时group=[a,b,ab]

3.拿出c,组合数据group拿出a、b、ab,分别与c组合,分别得到ac、bc、abc,把数据源c元素、ac、bc、abc插入组合数据group,此时group=[a,b,ab,c,ac,bc,abc]

js代码:

var data = ['a','b','c','d'];function getGroup(data, index = 0, group = []) {var need_apply = new Array();need_apply.push(data[index]);for(var i = 0; i < group.length; i++) {need_apply.push(group[i] + data[index]);}group.push.apply(group, need_apply);if(index + 1 >= data.length) return group;else return getGroup(data, index + 1, group);
}console.log(getGroup(data));

运行输出结果:

[ 'a','b','ab','c','ac','bc','abc','d','ad','bd','abd','cd','acd','bcd','abcd' ]

js实现全排列组合算法相关推荐

  1. js 数组全排列组合算法

    function doCombination(arr) {     var count = arr.length - 1; //数组长度(从0开始)     var tmp = [];     var ...

  2. js实现排列组合算法N选M

    JavaScript 从一个数组中拿出N个数(可放回),问共有多少种 今天在写一道leetcode的时候遇到了无重复放回的遍历问题,用递归解决如下: function p(arr, N, ans){i ...

  3. 最全排列组合算法详解以及套路总结一文突破

    项目github地址:bitcarmanlee easy-algorithm-interview-and-practice 经常有同学私信或留言询问相关问题,V号bitcarmanlee.github ...

  4. php 组合算法,PHP简单排列组合算法示例分享

    本文主要和大家介绍了PHP实现的简单排列组合算法,结合具体应用实例分析了排列组合算法的实现与使用技巧,需要的朋友可以参考下,希望能帮助到大家. 一.问题: 给你一个40斤的西瓜,给3个人分,有多少种分 ...

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

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

  6. js实现多维数组组合算法

    前言 最近在搞一个航线管理系统,如图,需要根据起始点,中转点和终点绘制航线图.这就涉及到点与点之间的组合算法.用专业点的说法,就是多维数组之间的元素组合.就拿上面的航线图来说,我们可以抽象为下面的数组 ...

  7. 全排列算法(无重复数字全排列/有重复数字全排列)/ 组合算法/ 求子集算法

    写在前面 全排列 1 无重复数字全排列 1.1 紫书版本 1.2 回溯法 2 有重复数字全排列 复盘易错点(可跳过) 写在前面 很久很久以前就想写的一篇博客,因为懒一直没开工,但是学习全排列算法算是我 ...

  8. js高效组合算法(递归)

    当在使用sku商品选择实现的过程中,发现获取潜在SKU需要用到组合算法: 很多人用的01位移法则,我个人觉得不好,下面是我选择方法 假如一个单品的参数组合是:A .B.C.D  当成一个数组a[4] ...

  9. js排列组合算法解决方案

    之前文章中谈过排列组合算法,主要事递归,代码如下 const arrangeCombination = arr => {const res = [], len = arr.length, inn ...

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

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

最新文章

  1. 应用随机过程张波商豪_Markov链的应用一:MCMC算法
  2. 代码质量第4层——健壮的代码!
  3. EC笔记:第4部分:19、设计class犹如设计type
  4. java Math类中的pow方法的问题Math.pow(64,1/3)是1而不是4
  5. python中numeric_Python中的Numeric
  6. 关于如何评价洗牌质量的猜想
  7. Callable、Future、FutureTask浅析
  8. 【MFC】vs2013_MFC使用文件之15.mfc 按钮CBitmapButton的使用
  9. 物流管理系统c语言程序设计,C语言程序设计物流管理系统.doc
  10. c# WebApi之解决跨域问题:Cors
  11. Atitit 下推自动机﹙PDA﹚说明书 目录 1. 概念组成与原理成分 1 2. 性状 1 3. 适用场景 主治 适应症 1 3.1. 所有场景()。 1 3.2. 语法解析 构建ast 2 3.
  12. 广告终结者自定义过滤搜集
  13. maven [INFO] No proxies configured [INFO] No proxy was configured, downloading directly
  14. AJAX(七)jsonp实战--天气预报
  15. pycharm 学生资格过期,提示No suitable licenses associated with account解决方案
  16. python爬取琳琅社区整站视频
  17. java--------------
  18. javascript系列丛书之读后感
  19. linux5关闭apic服务,Linux中断 - APIC
  20. Espressif 玩转 固件下载

热门文章

  1. Spring IOC中bean标签和管理对象细节
  2. linux操作系统的中断处理,Linux操作系统内核编程中断处理程序解读
  3. java赋值两个对象数组 clone_Java:类的两个相同对象数组的克隆问题
  4. pygame检测精灵与精灵的碰撞_Pygame(三)--走出黑暗的洞穴(2)
  5. linux怎样判断线程是否暂停_怎样寻找合适的创业项目?如何判断一个创业项目是否靠谱?...
  6. arduino串口监视器显示nan_Arduino常用的三种通信协议UART, I2C和SPI
  7. pythonsys用法_Python 使用sys模块
  8. FFmpeg学习(3)——视频中音频文件提取
  9. 论文笔记_S2D.14-2014-NIPS_利用多尺度深度网络从单张图像预测深度图
  10. 随手记_科研攻略_好的idea的产生