利用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
);
}
转载于:https://www.cnblogs.com/ruoh3kou/p/10316590.html