可以添加组合数字以给出一定的总和

时间:2014-02-11 08:58:41

标签: javascript math sum

有一个整数数组(例如3,4,5),你怎么能找到它们可以加到给定总和的所有组合? (例如,17)

对于这个例子,这三个数字可以有四种方式加起来为17:

  • 5 + 5 + 4 + 3
  • 5 + 4 + 4 + 4
  • 5 + 3 + 3 + 3 + 3
  • 4 + 4 + 3 + 3 + 3

你会如何以编程方式计算?例如。使用javascript。

2 个答案:

答案 0 :(得分:2)

一般主题称为“整数分区”。搜索可能会出现您可以使用的算法。

答案 1 :(得分:0)

这是一个可能的解决方案(我对其效率没有任何要求):

  1. 您创建一个包含数字总和的数据结构。 (该总和的价值以及构成它的所有数字)。
  2. 您有阵列A和目标总和TARGET。
  3. 您对数组A进行排序。
  4. 您创建一个新的数组B,使用上述数据结构从A初始化,其中B中的每个元素是A中相应数字的总和。
  5. 虽然(B有价值观)
    1. 您将A中的每个数字添加到B中的数据结构中(B现在将具有B.length*A.length个元素)
    2. B中的每个总和是目标
    3. B中至少TARGET的每个总和都从B
    4. 中删除
  6. 注意:如果A中的任何元素组合等于0,那么程序将永远不会结束(如预期的那样)。这意味着A必须具有大于0的所有元素

相关问题