【发布时间】:2016-10-01 06:55:30
【问题描述】:
我正在尝试做的事情可以很容易地用一个例子来说明。假设如下:
var minNum = 1;
var maxNum = 30;
var sum = 75;
var amount = 6;
我想得到所有 amount 个数字的排列,这些数字加起来为 sum 并且 >= minNum &&
例如,如果我要手动创建这些排列,我会这样开始:
30,30,12,1,1,1
30,30,11,2,1,1
30,30,11,1,2,1
30,30,11,1,1,2
30,30,10,3,1,1
30,30,10,2,2,1
等
这是数学/编程中的一个已知问题吗?是否有任何算法可以解决它?
提前致谢。
【问题讨论】:
-
您的示例中的可能性数量已经很大,超过数十万(我没有进行数学计算,但这是一个保守的估计)。时间和空间的复杂性至少可以说是具有挑战性的。你打算用这个做什么?注意:编程没有乐趣,至少对我来说不是。
-
既然你只是在问一个算法,我认为这样的问题最好在programmers stack exchange site上问。
-
@phaze0:算法问题在这里并没有跑题。
-
@RobertHarvey 哦!很高兴知道。
-
这是整数分区在限制范围内考虑术语顺序的M个加数的问题。一种可能的算法——递归生成
标签: javascript arrays algorithm