小米OJ 12. 找出可能的合的组合
利用dfs解决,从给出的数组左边或右边开始遍历,对每一个数字进行判断,有三种情况:
1. 加上当前数字的值,遍历下一个数字
2. 加上当前数字的值,继续遍历该数字
3. 不加上当前的数字的值,遍历下一个数字
约束条件为:
超出数组等
var sum = 0; var nums; function solution(line) { var str = line.split(" "); nums = str[0].split(","); var num = parseInt(str[1]); dfs(num, nums.length - 1); return sum + ""; } function dfs(target, curNum) { if (target < 0 || curNum < 0) { return; } if (target === 0) { sum++; return; } dfs(target - nums[curNum], curNum - 1); dfs(target - nums[curNum], curNum); dfs(target, curNum - 1); }