【问题标题】:Tricky math! K arrays of N size(total KxN), need all possible permutations of size N棘手的数学! K 个 N 大小的数组(总 KxN),需要大小为 N 的所有可能排列
【发布时间】:2012-10-14 04:36:58
【问题描述】:

例如我有:两个大小为 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]

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

有什么提示吗?

【问题讨论】:

    标签: arrays math permutation combinations digits


    【解决方案1】:

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

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

    where + 表示连接

    【讨论】:

    • 是的,这个数学运算一点都不难。一般是K^N
    • 另外@user1592535,一旦您对这是最佳答案感到满意,您应该点击绿色复选标记接受它。
    猜你喜欢
    • 2020-07-16
    • 2015-08-14
    • 1970-01-01
    • 2020-07-11
    • 2018-03-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多