0
说我有和数组:数组不重复的所有可能的组合?
var arr = [1,2,3,4];
我将如何去获得所有可能的组合,而无需重复?
例如:你想要什么
// "2,1" wouldn't be valid because it's essentially "1,2"
1
1,2
1,2,3
1,2,3,4
2
2,3
2,3,4
3
3,4
4
说我有和数组:数组不重复的所有可能的组合?
var arr = [1,2,3,4];
我将如何去获得所有可能的组合,而无需重复?
例如:你想要什么
// "2,1" wouldn't be valid because it's essentially "1,2"
1
1,2
1,2,3
1,2,3,4
2
2,3
2,3,4
3
3,4
4
并非所有可能的组合(subsets,失踪是1,3
,1,4
,2,4
),但所有subsequences。您可以通过使用该序列的开始和结束两个嵌套的循环让那些容易:
function subsequences(arr) {
var res = [[]];
for (var i=0; i<arr.length; i++)
for (var j=i+1; j<=arr.length; j++)
res.push(arr.slice(i, j));
return res;
}
对于所有可能的子集 - 的power set - 看this answer。
感谢您的解决方案,更重要的是参考/学习材料! – JasonPolito
尝试一些嵌套的循环,并回来与你有什么。看到一个解决的解决方案不会帮助你学到很多东西。 – MatthewMartin
这不是集合论意义上的“组合”(或排列),您正在根据您的示例输出查找所有可能的子集。 (和上面的问题一样,你有什么尝试?) – DrLivingston
@DrLivingston:示例输出实际上是子序列,而不是子集。 – Bergi