gpt4 book ai didi

javascript - 使用 javascript [高效方法] 生成不同大小的独特组合

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:47:51 26 4
gpt4 key购买 nike

我很难为一个集合生成不同大小的独特集合组合列表,比如,其中 n=6 [变量]

set = {2,3,4,5,6,7}

我需要像这样使用 javascript(有序集合)为上述集合生成所有唯一组合

6C1  +  6C2  +  6C3  +   6C4   +   6C5   +   6C6

2 2,3 2,3,4 2,3,4,5 2,3,4,5,6 2,3,4,5,6,7
3 2,4 2,3,5 2,3,4,6 2,3,4,5,7
4 2,5 2,3,6 2,3,4,7
5 2,6 2,3,7 2,4,5,6,7
2,7 2,4,5,6
. 2,4,5 2,4,5,7 3,4,5,6,7
. 3,4 2,4,6 .
8 3,5 2,4,7 2,5,6,7 .
3,6
3,7 2,5,6 3,4,5,6
2,5,7 3,4,5,7
4,5
4,6 2,6,7 3,5,6,7
4,7
3,4,5 .
5,6 3,4,6 .
5,7 3,4,7 .
.
. 3,5,6
6,7 3,5,7 4,5,6,7

3,6,7
.
.

5,6,7

当我需要将这些值中的每一个分配给字母顺序时,问题就来了。顺序是先是小写字母 a,b,c.. 然后是大写字母 A,B,C,.. 然后是 aA, aB、aC等

a=2     h=2,3    o=2,3,4   I=2,3,4,5  2,3,4,5,6  2,3,4,5,6,7
b=3 i=2,4 p=2,3,5 J=2,3,4,6 2,3,4,5,7
c=4 j=2,5 q=2,3,6 K=2,3,4,7
d=5 k=2,6 r=2,3,7 2,4,5,6,7
l=2,7 L=2,4,5,6
. s=2,4,5 M=2,4,5,7 3,4,5,6,7
. m=3,4 t=2,4,6 .
g=8 n=3,5 u=2,4,7 N=2,5,6,7 .
o=3,6
p=3,7 v=2,5,6 O=3,4,5,6
w=2,5,7 P=3,4,5,7
q=4,5
r=4,6 x=2,6,7 Q=3,5,6,7
s=4,7
y=3,4,5 .
t=5,6 z=3,4,6 .
u=5,7 A=3,4,7 .
.
. B=3,5,6
6,7 C=3,5,7 W=4,5,6,7

D=3,6,7
.
.

H=5,6,7

我知道正常的蛮力方法是解决问题的最简单方法,但对于大值,这将是非常低效的。

我正在寻找一种更有效的方法来解决这个问题。任何好的解决方案都会有很大帮助。

提前致谢,尼尔

最佳答案

函数生成组合:

function generate(index, array, used, result)
{
if (index == array.length && used.length > 0)
{
var a = new Array();
for (var i = 0; i < used.length; i++)
a.push(used[i]);

result.push(a);
}
else {
generate(index+1, array, used, result);

used.push(a[index]);
generate(index+1, array, used, result);
used.pop();
}
}

function generateAllCombinations(array)
{
var result = new Array();
generate(0, array, [], result);
return result;
}

函数 generateAllCmobinations 将返回所有可能的非空组合的数组。如果你愿意,我会写一个函数,它会返回所有长度为 K 的组合;-)

而且您找不到更好的算法。因为解决方案总是具有复杂性 O(C),其中 C 是总组合数。所以根据数组大小的复杂度是指数级的 O(2^N)

关于javascript - 使用 javascript [高效方法] 生成不同大小的独特组合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12455178/

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