算法:每组数字加起来一定数量

时间:2015-04-21 04:51:11

标签: javascript algorithm

我很难解决这个问题。给定一组数字([1, 2, 3, 4, 5, 6, 7,8, 9, 10, 11, 12]),我想找到每个可能的组合,最多为12个。

因此,[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1][1, 2, 9]的{​​{1}}相同。

理想情况下,返回值类似于......

[12]

我不一定需要解决编程问题,只需要算法中的算法或方向。

这是我到目前为止所做的:

[
  [1,1,1,1,1,1,1,1,1,1,1,1],
  [1,1,1,1,1,1,1,1,1,1,2],
  …
]

2 个答案:

答案 0 :(得分:4)

答案 1 :(得分:1)

function exactSum(summands, sum, answer, result) {
  answer = answer || [];
  result = result || [];
  for (var i = 0; i < summands.length; i++) {
    var summand = summands[i];
    var currAnswer = answer.slice();
    var remainder = sum;
    for (var j = 1; remainder >= 0; j++) {
      currAnswer.push(summand);
      remainder -= summand;
      if (!remainder) {
        result.push(currAnswer);
      }
      exactSum(summands.slice(i + 1), remainder, currAnswer, result);
    }
  }
  return result;
}
console.log(exactSum([1, 2, 3], 7));