【发布时间】:2013-08-14 14:01:13
【问题描述】:
我正在尝试编写一个算法来获取 M 元素的多维数组中 N 元素的所有可能组合。
类似:
function getCombinations(arr, n){
...
}
var arr = [ ["A"],["B","C"],["D","E"]];
var n = 2;
getCombinations(arr,n);
这应该产生:
[
["A","B"],["A","C"],["A","D"],["A","E"],
["B","D"],["B","E"],
["C","D"],["C","E"]
]
数组中的元素数量可能会有所不同,唯一设置的是组合的元素数量。
顺序无所谓,但不能重复,我的意思是["A","B"] == ["B","A"],所以第二个不考虑。
有什么帮助吗?
【问题讨论】:
-
因为尺寸完全被忽略了。您可以将数组转换为一维数组,然后在其上运行一个简单的置换算法。
-
另外,考虑到
n不同的元素,它会生成n!排列...如果元素数量更多,可能需要一段时间 -
所以要明确 BC 和 DE 不是有效的组合?因为它们不在您的示例中。在这种情况下,它不是一个简单的排列。同样,如果 n=3 是 ABC 一个有效的组合?
-
抱歉,不是这样,请参阅 3º 对进一步说明的回答