js实现全排列组合算法
全排列组合算法,例如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实现全排列组合算法相关推荐
- js 数组全排列组合算法
function doCombination(arr) { var count = arr.length - 1; //数组长度(从0开始) var tmp = []; var ...
- js实现排列组合算法N选M
JavaScript 从一个数组中拿出N个数(可放回),问共有多少种 今天在写一道leetcode的时候遇到了无重复放回的遍历问题,用递归解决如下: function p(arr, N, ans){i ...
- 最全排列组合算法详解以及套路总结一文突破
项目github地址:bitcarmanlee easy-algorithm-interview-and-practice 经常有同学私信或留言询问相关问题,V号bitcarmanlee.github ...
- php 组合算法,PHP简单排列组合算法示例分享
本文主要和大家介绍了PHP实现的简单排列组合算法,结合具体应用实例分析了排列组合算法的实现与使用技巧,需要的朋友可以参考下,希望能帮助到大家. 一.问题: 给你一个40斤的西瓜,给3个人分,有多少种分 ...
- 组合算法/全排列算法/求子集算法
本文介绍组合算法,组合算法有很多,这里只介绍其中一种的两种形式. 全排列:全排列算法 组合:本文 子集算法:求子集算法 组合 leetcode实战:组合 给定两个整数 n 和 k,返回范围 [1, n ...
- js实现多维数组组合算法
前言 最近在搞一个航线管理系统,如图,需要根据起始点,中转点和终点绘制航线图.这就涉及到点与点之间的组合算法.用专业点的说法,就是多维数组之间的元素组合.就拿上面的航线图来说,我们可以抽象为下面的数组 ...
- 全排列算法(无重复数字全排列/有重复数字全排列)/ 组合算法/ 求子集算法
写在前面 全排列 1 无重复数字全排列 1.1 紫书版本 1.2 回溯法 2 有重复数字全排列 复盘易错点(可跳过) 写在前面 很久很久以前就想写的一篇博客,因为懒一直没开工,但是学习全排列算法算是我 ...
- js高效组合算法(递归)
当在使用sku商品选择实现的过程中,发现获取潜在SKU需要用到组合算法: 很多人用的01位移法则,我个人觉得不好,下面是我选择方法 假如一个单品的参数组合是:A .B.C.D 当成一个数组a[4] ...
- js排列组合算法解决方案
之前文章中谈过排列组合算法,主要事递归,代码如下 const arrangeCombination = arr => {const res = [], len = arr.length, inn ...
- 算法之排列与组合算法
1. 前言 本文介绍了常用的排列组合算法,包括全排列算法,全组合算法,m个数选n个组合算法等. 2. 排列算法 常见的排列算法有: (A)字典序法 (B)递增进位制数法 (C)递减进位制数法 (D)邻 ...
最新文章
- 应用随机过程张波商豪_Markov链的应用一:MCMC算法
- 代码质量第4层——健壮的代码!
- EC笔记:第4部分:19、设计class犹如设计type
- java Math类中的pow方法的问题Math.pow(64,1/3)是1而不是4
- python中numeric_Python中的Numeric
- 关于如何评价洗牌质量的猜想
- Callable、Future、FutureTask浅析
- 【MFC】vs2013_MFC使用文件之15.mfc 按钮CBitmapButton的使用
- 物流管理系统c语言程序设计,C语言程序设计物流管理系统.doc
- c# WebApi之解决跨域问题:Cors
- Atitit 下推自动机﹙PDA﹚说明书 目录 1. 概念组成与原理成分	1 2. 性状	1 3. 适用场景 主治 适应症	1 3.1. 所有场景()。	1 3.2. 语法解析 构建ast	2 3.
- 广告终结者自定义过滤搜集
- maven [INFO] No proxies configured [INFO] No proxy was configured, downloading directly
- AJAX(七)jsonp实战--天气预报
- pycharm 学生资格过期,提示No suitable licenses associated with account解决方案
- python爬取琳琅社区整站视频
- java--------------
- javascript系列丛书之读后感
- linux5关闭apic服务,Linux中断 - APIC
- Espressif 玩转 固件下载
热门文章
- Spring IOC中bean标签和管理对象细节
- linux操作系统的中断处理,Linux操作系统内核编程中断处理程序解读
- java赋值两个对象数组 clone_Java:类的两个相同对象数组的克隆问题
- pygame检测精灵与精灵的碰撞_Pygame(三)--走出黑暗的洞穴(2)
- linux怎样判断线程是否暂停_怎样寻找合适的创业项目?如何判断一个创业项目是否靠谱?...
- arduino串口监视器显示nan_Arduino常用的三种通信协议UART, I2C和SPI
- pythonsys用法_Python 使用sys模块
- FFmpeg学习(3)——视频中音频文件提取
- 论文笔记_S2D.14-2014-NIPS_利用多尺度深度网络从单张图像预测深度图
- 随手记_科研攻略_好的idea的产生