【发布时间】:2017-09-19 09:22:37
【问题描述】:
假设我想在 1 到 N 的范围内找到 n 个不同的数字,使它们的总和等于 N。例如
n = 3, N = 10: the numbers will be (2, 3, 5);
n = 4, N = 10: the numbers will be (1, 2, 3, 4).
虽然找出这个问题的所有可能组合需要指数级的时间,但我正在寻找“最小”的组合,即最大的数字是最小的。例如,
在n = 4, and N = 12的情况下,(6, 3, 2, 1) and (5, 4, 2, 1)都可以解决,但我只对(5, 4, 2, 1)感兴趣。
对于这个问题,会不会有时间复杂度更好的算法?我听说过对数合并,但不确定如何在此处应用。
如果需要指定问题的任何细节,请告诉我。并且总是,我们将非常感谢任何帮助。
【问题讨论】:
-
对于n = 3,N = 10,我认为解决方案应该是
2, 3, 5
标签: algorithm