【发布时间】:2015-10-20 13:13:06
【问题描述】:
我正在尝试查找数组元素的所有分区,但有一个重要的变化:
第二个数组的每个值都需要分布在第一个数组的值上。所以总是使用第二个数组的所有值。
给定这两个数组:
left = [A, B];
right = [1, 2, 3];
我希望得到以下结果的集合:
A = [1, 2, 3]
B = []
A = [1, 2]
B = [3]
A = [1, 3]
B = [2]
A = [2, 3]
B = [1]
A = [1]
B = [2, 3]
A = [2]
B = [1, 3]
A = [3]
B = [1, 2]
A = []
B = [1, 2, 3]
编辑:
所以要清楚。这需要针对两个数组进行扩展。
给定数组:
left = [A, B, C, D]
right = [1, 2, 3, 4, 5, 6]
一些(很多很多可能的)结果是:
A = [2, 5]
B = [1]
C = []
D = [3, 4, 6]
A = [6]
B = []
C = [1, 2, 3, 4, 5]
D = []
etc. etc. etc.
【问题讨论】:
-
数组中元素的顺序重要吗?
-
我不在乎订单。我希望结果是唯一的(所以如果已经存在 A=1,2,3 则 A=2,1,3 将被省略),但即使这样也不是灾难。
-
看看这里的代码是否对Generating all combinations of an array有帮助。或者查看一个组合数学库,比如github.com/dankogai/js-combinatorics
-
编辑:很遗憾,我无法将其应用于我的问题。
-
left总是正好是两个数组吗?然后this 应该会有所帮助(当您不推送到A时,只需推送到B)
标签: javascript arrays algorithm