什么是多维数组的全排列问题?
为了更好的说明这个问题,请看下面的这个题目。
题目有什么特点?
- 输出的结果并不是完全乱序的,从输入的顺序也可以看出二维数组中第一个数组的顺序大于第二个,第二个则大于第三个。
- 后一个结果依赖于前一个结果。
代码实现
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,而多维数组的全排列则使用的是动态规划,后一个结果依赖于前一个结果。