我很难理解这个问题。给定一组数字 ([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 ]
和 [12]
一样。
理想情况下,返回值类似于...
[
[1,1,1,1,1,1,1,1,1,1,1,1],
[1,1,1,1,1,1,1,1,1,1,2],
…
]
我不一定需要解决编程问题,只需要算法或算法中的方向。
这是我目前所拥有的:
var subsets = function (arr, total, answers, itteration) {
var answers = answers || [[0]],
itteration = itteration || 0,
thisTest = answers[itteration],
testTotal = sum(thisTest, total);
if (testTotal === total) {
if (arr.length === itteration) {
return answers;
}
return subsets(arr, total, answers, itteration++);
}
for (var i=0, i<arr.length; i++) {
thisTest.push(arr[i]);
if (sum(thisTest, total) === total) {
}
}
}
var sum = (array, total) {
var tempTotal = 0;
return array.forEach(function (el) {
return tempTotal += el;
});
}
console.log(subsets([1,2,3,4,5,6,7,8,9,10,11,12], 12));
最佳答案
听起来类似于硬币找零问题(动态编程)。您可以在 http://www.geeksforgeeks.org/dynamic-programming-set-7-coin-change/ 找到示例 http://www.geeksforgeeks.org/count-number-ways-reach-given-score-game/
关于javascript - 算法:每组数字加起来等于某个数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29763175/