gpt4 book ai didi

javascript - 与重复相结合

转载 作者:行者123 更新时间:2023-11-28 13:21:35 25 4
gpt4 key购买 nike

我正在寻找一种方法来获得与数组摄入的所有可能组合,因此如果我们有[1,2,3]它将返回

[1,1,1],[1,1,2],[1,1,3],[1,2,2],[1,2,3],[1,3,3],[2,2,2],[2,2,3],[2,3,3],[3,3,3]. 

我看过其他几篇文章,例如这里的这篇文章:https://stackoverflow.com/a/9960925/1328107但他们似乎都停止了所有组合,即

[ 1, 2, 3 ], [ 1, 3, 2 ],[ 2, 1, 3 ], [ 2, 3, 1 ], [ 3, 1, 2 ], [ 3, 2, 1 ].

任何帮助将不胜感激。

最佳答案

回溯就可以解决问题:

function combRep(arr, l) {
if(l === void 0) l = arr.length; // Length of the combinations
var data = Array(l), // Used to store state
results = []; // Array of results
(function f(pos, start) { // Recursive function
if(pos === l) { // End reached
results.push(data.slice()); // Add a copy of data to results
return;
}
for(var i=start; i<arr.length; ++i) {
data[pos] = arr[i]; // Update data
f(pos+1, i); // Call f recursively
}
})(0, 0); // Start at index 0
return results; // Return results
}

一些例子:

combRep([1,2,3], 1); /* [
[1], [2], [3]
] */
combRep([1,2,3], 2); /* [
[1,1], [1,2], [1,3],
[2,2], [2,3],
[3,3]
] */
combRep([1,2,3], 3); /* [
[1,1,1], [1,1,2], [1,1,3],
[1,2,2], [1,2,3],
[1,3,3],

[2,2,2], [2,2,3],
[2,3,3],

[3,3,3],
] */
combRep([1,2,3]); /* Same as above */

关于javascript - 与重复相结合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32543936/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com