一直困惑的一个点就是回溯后也都是为false不是会重复吗
但是回溯之后回到循环进行弹栈和置为false,接着进行的是下一轮循环,下标不一样
对应的值就不一样了,等于说数组元素都进行回溯了一遍,所以是不会重复的
var permute = function(nums) {
const res = [], path = [];
function backtracking(n, k, used){
if(path.length == k){
res.push(Array.from(path));
return;
}
for(let i = 0; i < k; i++){
if(used[i]) continue;
path.push(n[i]);
used[i] = true;
backtracking(n, k, used);
path.pop();
used[i] = false;
}
}
}
全排列(一些解惑的点)
最新推荐文章于 2024-09-16 08:47:17 发布
文章讨论了在JavaScript代码中,使用回溯算法解决数组排列问题时,虽然看似会重复,但由于每次回溯过程中数组下标不同导致元素值各异,实际上不会造成重复结果。作者通过`permute`函数和`backtracking`递归方法详细解释了这一过程。
摘要由CSDN通过智能技术生成