首页 > 其他分享 >js 实现排列组合

js 实现排列组合

时间:2023-06-10 10:57:16浏览次数:38  
标签:index currentArr return 实现 arr dataArr js let 排列组合

组合: (不考虑顺序,无重复)

//测试用例
let dataArr = [1, 2, 3, 4, 5];

function combination(dataArr, remainNum, currentArr) {
  if (remainNum === 0) {
    console.log(...currentArr);
    return;
  }
  for (let i = 0; i < dataArr.length + 1 - remainNum; i++) {
    currentArr.push(dataArr[i]);
    combination(dataArr.slice(i + 1), remainNum - 1, currentArr);
    currentArr.pop();
  }
}

const currentArr = [];
combination(dataArr, 3, currentArr);

排列:

//测试用例
let dataArr = [1, 2, 3, 4, 5];
let num = 0;

function swap(arr, m, n) {
  if (m === n) {
    return;
  }
  let temp = arr[m];
  arr[m] = arr[n];
  arr[n] = temp;
  return;
}

function fullPermutation(dataArr, index) {
  if (index === dataArr.length - 1) {
    console.log(...dataArr);
    num++;
    return;
  }
  for (let i = index; i < dataArr.length; i++) {
    swap(dataArr, index, i);
    fullPermutation(dataArr, index + 1);
    swap(dataArr, index, i);
  }
}

fullPermutation(dataArr, 0);
console.log("个数:", num);

 

标签:index,currentArr,return,实现,arr,dataArr,js,let,排列组合
From: https://www.cnblogs.com/zcm1688/p/17470883.html

相关文章

  • 前端vue实现页面加水印文字 单个页面所有页面加水印 水印颜色
    前端vue实现页面加水印文字,可以实现系统所有页面加水印,也可以单个页面加水印,可更改水印颜色, 下载完整代码请访问uni-app插件市场地址: https://ext.dcloud.net.cn/plugin?id=12889效果图如下:   ####使用方法```使用方法/*给系统所有页面加水印*///第一个......
  • js笔记_流程控制
    if判断varage=1;if(age>3){alterr("haha");}elseif{age<5){alert("kuwa");}else{alert("kuwa");}while循环,避免程序死循环while(age<100){age=age+1;console.log(age)}do{age=age+1;console.log(age)}while(age&l......
  • js笔记_Map,Set
    //ES6Mapvarmap=newMap([["tom",100],["jack",100],["jj",100]]);varname=map.get("tom");//通过key获取valuemap.set(‘admin’,123456);//新增或修改map.delete(“tom”);//删除Set:无序不重复的集合set.add(2);//添加set.delete;//删除consol......
  • imessages数据检测,imessages过蓝检测,用applescript检测手机号码是否注册imessage实
    一、检测iMessage发送数据的2种方式:1.人工筛选,将要验证的号码输出到文件中,以逗号分隔。再将文件中的号码粘贴到iMessage客户端的地址栏,iMessage客户端会自动逐个检验该号码是否为iMessage账号,检验速度视网速而定。红色表示不是iMessage账号,蓝色表示iMessage账号。2.编写脚本控制......
  • React - 03 JSX语法示例及JSX渲染机制
    1.根据变量控制元素显示/隐藏2种方式,方式1会渲染但不显示,方式2不会渲染元素2.循环列表渲染用数组的map方法,直接将要循环的元素返回如果数组的每个元素都是empty,则为稀疏数组,否则为密集数组,即使每个元素都是null也是密集数组3.JSX渲染机制第一步:把我们编写的JSX语法,编译为虚拟DOM对......
  • 【基础算法】关于高精度计算的问题【很高位数数据的加减乘除(相关代码用C++实现)】
    前言当我们在利用计算机进行一些计算时,可能会遇到这类问题:有些计算要求精度高,希望计算的数的位数可达几十位甚至几百位,虽然计算机的计算精度也算较高了,但因受到硬件的限制,往往达不到实际问题所要求的精度。这时我们就可以通过程序设计来解决这类问题,例如:<fontcolor=red>创建......
  • js笔记_对象
    对象:若干键值对var对象名={属性名:属性值,属性名:属性值,属性名:属性值,属性名:属性值}定义一个person对象,有两个属性!varperson={name:"li",age:"18"}js中对象,{.........}表示一个对象,键值对描述属性xxxx:xxxx,多个属性之间用逗号隔开,最后一个属性不用加逗号!1.对象赋......
  • js笔记
    /*1.前提:IDEA需要设置支持ES6语法·usestrict`;严格检查模式2.数据类型2.1字符串1.正常字符串:单引号或者双引号2.;转义字符\'\n\t\u4e2d\u###unicode字符\x41Ascll字符3.多行字符串编写//tab上面,esc下面varmsg=hello......
  • (HTML+CSS+JS)实现弹球游戏
    一、前言弹球游戏是一款很经典的游戏了,小时候无论是在掌机还是电脑都有玩过这款游戏,简简单单朴实无华,接下来我们通过前端代码来简单实现一下这个游戏吧。这是一个基于HTML5Canvas的弹球游戏的实现,通过JavaScript语言实现游戏的核心逻辑。主要包括以下部分:定义了canvas元素并......
  • C语言循环打印空心正方形代码实现
    #include<stdio.h>intmain(){intw,i,j;printf("输入正方形边长\n");scanf_s("%d",&w);if(w<=0){printf("正方形边长要大于0\n");return0;}//外层循环控制行数......