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