js 实现排列组合

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

复制代码
//测试用例
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);
复制代码

 

posted @   前端小菜鸡美哥  阅读(42)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
点击右上角即可分享
微信分享提示