动态规划-二维数组全排列

题目

请编写一个函数,输出二维数组的全排列,二维数组中的元素固定两个,数组长度不定,例如:
输入:[[1,2],[3,4],[a,b],[c,d]]
输出:13ac,13ad,13bc,13bd,14ac,14ad,14bc,14bd,23ac,23ad,23bc,23bd,24ac,24ad,24bc,24bd

答案

function printAllCombination(arr) {
  let pre = arr[0];

  for (let i = 1; i < arr.length; i++) {
    let temp = [];
    pre.forEach((item) => {
      arr[i].forEach((val) => {
        temp.push(`${item}${val}`);
      });
    });
    pre = temp;
  }
  return pre.join(",");
}

console.log(printAllCombination(input));

输出结果:

13ac,13ad,13bc,13bd,14ac,14ad,14bc,14bd,23ac,23ad,23bc,23bd,24ac,24ad,24bc,24bd

解析

动态规划,本次的结果以来上次的结果。

两层循环:

  • 外层:主要用于取每次被组合元素

  • 内层:记录本次组合结果,并作为新的遍历对象

Last updated