gpt4 book ai didi

javascript - 如何从 JavaScript 数组值中找到所有长度的所有排列?

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:32:25 24 4
gpt4 key购买 nike

例如,如果我有一个包含 items 的数组

["A", "B", "C"]

我想创建一个函数,返回一个数组,其中包含所有可能的排列/所有可能的混合结果,所有大小从 1 到数组中的项目数

例如结果应该在这里:

["","A" "B", "C","AB", "BA", "AC", "CA", "CB","BC", "ABC", "ACB", "BAC", "BCA", "CAB", "CBA"]

你能帮帮我吗?

最佳答案

我不太擅长js,但我会尝试向您展示如何解决这个问题,并会为您提供一些非常有用的c++代码类似于 js

首先,你必须知道数组中的元素个数

这里是js代码。

var arr=["a","b","c"];     
var l=arr.length;

这里是主要思想:

所有可能的排列数,不包括重复的元素是2^l,l是元素的个数。

对于上面的arr,所有可能排列的个数是2^3=8,也等于二进制的(111)+1+1是空集。

如果您从 0 数到 7,您将有 8 个元素。如果用二进制从 (000) 数到 (111) 也是一样的。

计数结果为:

000
001
010
011
100
101
110
111

如果你寻找零和一(你可能会说真或假),它们将显示所有可能的排列的数量而不重复。(000:选择没有元素,001:选择最后一个元素,。 .., 101 选择第一个和最后一个元素,...,111: 选择所有元素)。所以现在你可以创建一个函数来生成集合 {"","a","b","c","ab","ac","bc","abc"}.

现在您需要找到具有多个元素的元素的可能组合。我不知道在 js 中是什么,但在 c++ 中我通常使用 next_permutation .

求二进制数时,位数必须与数组元素个数相同。

//the code of converting the decimal number to binary.
strint tobinary(int l,int n){
int x;
string str="";
//the while statement finds the binary equivalent
while(n!=0){
x=n/2;
n=n%2;
str=(x+'0')+str; //the '0' is equal to 48(the ASCII code of 0)
}
//the while statement adds zeros to the left of the binary number until it's length is equal to the number of the elements.
while(str.length()!=l)
str="0"+str;
return str;
}

您现在必须定义一个向量或一个动态数组,并为 2^l 次找到与字符串 str 中的元素相反的元素。

如果你想在 javascript 中找到类似排列的东西,see here .

希望我的回答对您有所帮助;

关于javascript - 如何从 JavaScript 数组值中找到所有长度的所有排列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29196936/

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