1

所以例如我有:两个大小为 3 的数组包含

[1,2,3] and [7,8,9]

现在我需要找出所有可能的排列,如果我要将它们放入一个大小为 N 的数组中。它们并不都需要包括在内(很明显它们不能,因为数组太小了)

规则:每个数字必须在新排列的自己的索引中(所以数字 1 在索引 0 中,它必须在新排列的索引 0 中)。注意:数字总是不同的

所以解决方案是(这些数组的顺序无关紧要):

[1,2,3]
[1,8,3]
[1,2,9]
[1,8,9]
[1,2,9]
[7,2,3]
[7,8,3]
[7,8,9]
[7,2,9]

但是现在我需要为任意数量的数组编程;它们将始终具有相同的大小。

有什么提示吗?

4

1 回答 1

1

对于每个索引,有两种选择。因此,有 2^3 = 8 个排列。解决方案:

results := [[]]
for a, b in A, B
    results :=
        results.map(result => a + result) +
        results.map(result => b + result)

其中 + 表示连接

于 2012-10-14T04:48:56.977 回答