Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/367.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 组合数字可以加在一起得到一定的总和_Javascript_Math_Sum - Fatal编程技术网

Javascript 组合数字可以加在一起得到一定的总和

Javascript 组合数字可以加在一起得到一定的总和,javascript,math,sum,Javascript,Math,Sum,有一个整数数组(如3,4,5),你怎么能找到所有可以加在一起的组合呢?(例17) 例如,有四种方法可以将三个数字相加为17: 5+5+4+3 5+4+4+4 5+3+3+3+3+3 4+4+3+3+3+3 您将如何以编程方式计算此值?例如,使用javascript。这里有一个可能的解决方案(尽管我对其效率没有任何要求): 您可以创建一个包含数字总和的数据结构。(该总和的值以及构成该总和的所有数字) 您有一个数组A和一个目标和目标 将数组排序为A 创建一个新的数组B,该数组由a初始化,数据结构

有一个整数数组(如3,4,5),你怎么能找到所有可以加在一起的组合呢?(例17)

例如,有四种方法可以将三个数字相加为17:

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

您将如何以编程方式计算此值?例如,使用javascript。

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

  • 您可以创建一个包含数字总和的数据结构。(该总和的值以及构成该总和的所有数字)
  • 您有一个数组A和一个目标和目标
  • 将数组排序为A
  • 创建一个新的数组B,该数组由a初始化,数据结构如上所述,其中B中的每个元素都是a中相应数字的和
  • While(B有值)
  • 将A中的每个数字添加到B中的数据结构中(B现在将具有
    B.length*A.length
    元素)
  • B中作为目标的每个和都是一个解
  • B中至少是目标的每个和都从B中移除

  • 注:如果A中的任何元素组合等于0,则程序将永远不会结束(如预期)。这意味着A必须具有大于0的所有元素。一般的主题称为“整数分区”。搜索它可能会找到一个你可以使用的算法

    可能是带有
    %
    的内容?在您的示例中,不完整的组合是允许的。例如:
    5+4+4+4
    (缺少3个)。是吗?@最后面的是,是的。并非数组中的所有数字都需要使用。只有第一个示例使用每个数字:-)是否有三个(或更多)整数的数组,最多六个(或更多)求和数?或者数字比这个大很多?整数分区的数量增长非常快。如果涉及的数字很小,这将使您的编码更容易,因为您不需要使用太多的优化。感谢您的回答,但它看起来相当复杂。我将使用罗伯特的方法:-)