【问题标题】:Given x, How can I find all the sets of four numbers that add upto x给定x,我怎样才能找到加起来为x的所有四个数字的集合
【发布时间】:2015-03-27 02:16:04
【问题描述】:

我知道如何找到一组两个数字。我可以对从 0 到 X-1 的所有数字进行排序。将指针 P1 放在 0 处,将 P2 放在 X-1 处,每走一步,P1 加 1,P2 减 1。 如何开始找到所有 4 个数字的集合?

【问题讨论】:

    标签: algorithm data-structures language-agnostic numbers


    【解决方案1】:

    一个(许多)简单的解决方案:一个递归函数,它生成一个数字并使用另一个修改了 x 的调用作为下一个。伪代码:

    generate(x, digits, current[])
    {
        if digits < 1
            print all current´s in one (single) line
            return
        for every i from 0 to x
            add i as new element to current
            generate (x - i, digits - 1, current)
            remove the last element of current again
    }
    

    当前是一些列表,数组等,第一次调用时为空。
    x 是数字和数字,例如。 4 在第一次通话中。

    【讨论】:

    • 是暴力破解所有组合吗?
    • @shole 是的。但是如果你想要 all 组合(即打印它们中的每一个或类似的东西),除了生成 all 组合之外别无他法。 (如果有人不需要这些值,只需要数量或满足某些条件的值等,那么有更好的方法。)
    猜你喜欢
    • 1970-01-01
    • 2020-02-18
    • 2023-03-22
    • 2021-10-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-13
    • 2013-07-06
    相关资源
    最近更新 更多