我很难解决这个问题。给定一组数字([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],
…
]
答案 0 :(得分:4)
听起来类似于硬币更改问题(动态编程)。您可以在http://www.geeksforgeeks.org/dynamic-programming-set-7-coin-change/找到示例 http://www.geeksforgeeks.org/count-number-ways-reach-given-score-game/
答案 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));