在数学中有排列组合,用来计算概率。

比如:从n个数字中,任意选择m个的情况。从5个数字中任意选择3个数字的情况。(这里我们只考虑没有顺序的情况)。

公式:C(n,m)=n!/[m!(n-m)!]=n*(n-1)*...*(n-m+1)/[1*2*...*m],如C(5,2)=[5*4]/[1*2]=10.

举例说明:有 1,2,3,4 四个数字,从这四个数字中,任意选择两个数字一共有多少种情况:[1,2], [1,3], [1,4], [2,3], [2,4], [3,4]一共有这六种情况。

下面用代码实现从n个数字中任意选择m个的情况(不考虑顺序)。

        /* arr 第一个参数 需要排列组合的数组,len 第二个参数为需要组合的个数 *//* 返回参数为多为数组[[],[]] */function rankFun(arr, len = 3) {var returnArr = [];var calculationFun = function(calcuArr, cArr = null) {var copyArr = [].concat(calcuArr);!cArr && copyArr.splice(0, 1);for(var i = 0, l = copyArr.length; i < l; i++) {var strArr1 = cArr? [].concat(cArr): [calcuArr[0]];strArr1.push(copyArr[i]);if(strArr1.length >= len) {returnArr.push(strArr1);} else {var newCopy = [].concat(copyArr);newCopy.splice(0, i+1);calculationFun(newCopy, strArr1);}}if(!cArr) {if(copyArr.length > len) {calculationFun(copyArr);} else {returnArr.push(copyArr);}}}len <= 1 ?(returnArr = arr) :calculationFun(arr);return returnArr;}var arr = [0,2,3,-1,8];console.log(rankFun(arr, 4));

代码输出结果如下:

Javascript实现数组排列组合相关推荐

  1. java排列组合二维数组_JavaScript 二维数组排列组合2

    二维数组排列组合 var arrays = [ [ '1-1-雨尘', '1-2-芸芸', '1-3-简一', '1-4-乐乐' ] , [ '2-5-小明', '2-6-花花', '2-7-数数' ...

  2. 数组排列组合问题——BACKTRACKING

    BACKTRACKING backtracking(回溯法)是一类递归算法,通常用于解决某类问题:要求找出答案空间中符合某种特定要求的答案,比如eight queens puzzle(将国际象棋的八个 ...

  3. js中多个数组排列组合

    以项目中用到的数组排列组合为例,下图是最后的效果图(图只是用来说明并不具体实现): 数据\color{#ed1941}{数据}数据 data() {return {arr: [[{ name: &qu ...

  4. 数列的组合及排列方式java_java数组排列组合

    ⑥ 对于正面考虑太复杂的问题,可以考虑反面. ⑦ 对于一些排列数与组合数的问题,需要构造模型. 典例分析排列数组合数的简单计算 [例1] 对于满足 n ≥ 13 的正...... Java 实现排列组 ...

  5. java数组排列组合_java算法题--递归求数组中数字排列组合问题

    java算法题–递归求数组中数字排列组合问题 题目:有一个数组{1,2,3},输出数组中数字的所有可能组合: 比如:123.132.213- 解题思路 通过递归不停的交换数组中的两个数(当然,肯定是有 ...

  6. java 数组的排列组合_java数组排列组合问题汇总

    面试或笔试中,多次遇到以下4个关于排列组合的手撕算法,这里做个笔记,方法日后查阅: 1. 无重复元素的数组,求全排列: 2. 有重复元素的数组,求全排列: 3. 无重复元素的数组,求组合[子集]: 4 ...

  7. 数组排列组合算法汇总

    求数组全排列(不包含或者包含重复元素) 求数组所有组合(相当于求集合的所有子集,不包含或者包含重复元素) 从n个数中选择k个的组合(不包含重复元素) 从n个数中选择k个的组合(包含重复元素) [版权声 ...

  8. Tyler and Strings(树状数组/排列组合/dp)

    题目 题意:给定两个数组s,ts,ts,t,现重排列数组sss,使得数组sss小于ttt.问有多少种排列方式. 参考 代码源自cwxzh #include<bits/stdc++.h> u ...

  9. JavaScript二维数组元素排列组合

    lizuncong (lizuncong) · GitHubI am a strong believer in reverse engineering. lizuncong has 42 reposi ...

最新文章

  1. 页面与ViewModel(上)
  2. 2、MySQL错误日志(Error Log)详解
  3. python计算2的平方代码_python – NumPy计算向量的范数2的平方
  4. js 在新窗口中打开URL
  5. wxPython布局管理
  6. LeetCode 748. 最短完整词
  7. HDU 6581 Vacation
  8. C++优先队列priority_queue详解
  9. IPv4地址何去何从 IPv6不向下兼容的尴尬
  10. HTTP的缺点与HTTPS
  11. android 仿ofo页面,GitHub - AndroidProject1212/react-native-ofo: React Native 仿 ofo 共享单车 App...
  12. CCS软件仿真 手把手教你 CCS 软件仿真 TMS320F2812
  13. C语言算法7744问题
  14. HTML5+CSS大作业 网页制作代码_大学生网页制作作业代码——年会抽奖网页设计(1页)
  15. Android Studio的反编译工具使用。
  16. 连八股文都不懂还指望在后端混下去么
  17. 迅雷9窗口右侧的内置浏览器如何去掉。
  18. 修改谷歌浏览器缓存位置总结
  19. cpu功耗排行_目前较低功耗的intel系cpu求推荐?
  20. m2硬盘写入速度测试软件,【英特尔 600P 512G PCIE M2 SSD 固态硬盘测试总结】读写速度|空间_摘要频道_什么值得买...

热门文章

  1. C语言指针之NULL
  2. ArcGIS10.2 因空间索引导致数据编辑保存速度慢问题
  3. 详细描述下自定义 View 测量时的 MesureSpec.UNSPECIFIED
  4. 堡垒机、堡垒机的原理
  5. python用selenium 验证码图片_selenium实现定位截图----获取验证码图片
  6. UVW源码漫谈(三)
  7. Elastic:如何成为一名 Elastic 认证工程师,Elastic 认证分析师及 Elastic 认证可观测性工程师
  8. TomCat启动不了的原因
  9. 前端html+css: 3D滚动正方体————按住鼠标左键即可拖动
  10. WSL2配置图形界面-MATE