什么是多维数组的全排列问题?

为了更好的说明这个问题,请看下面的这个题目。

多维数组的全排列问题_数组

题目有什么特点?

  1. 输出的结果并不是完全乱序的,从输入的顺序也可以看出二维数组中第一个数组的顺序大于第二个,第二个则大于第三个。
  2. 后一个结果依赖于前一个结果。

代码实现

const permutate = (arr) => {
    // res为第一个数组
    let res = arr[0].slice();

    // 从第二个数组开始遍历
    for (let i = 1; i < arr.length; i++) {
        const pre = res.slice();
        res = [];
        pre.forEach(item => {
            arr[i].forEach(item2 => {
                res.push(item + item2);
            })
        })
    }
    return res
}

permutate([['A','B'], ['a','b'], [1, 2]])

思考与总结

多维数组的全排列问题,和全排列问题类似,但是不同于全排类问题。全排列问题使用的是DFS,而多维数组的全排列则使用的是动态规划,后一个结果依赖于前一个结果。