思路:利用回溯去遍历,回溯结束条件为遍历到最后一个数字,如果符合target则目标数+1
class Solution {
public:
//记录合为结果的数量
int count = 0;
int findTargetSumWays(vector<int>& nums, int target) {
//利用回溯来寻找
backtrack(nums,target,0,0);
return count;
}
void backtrack(vector<int>& nums, int target,int index,int sum){
//回溯条件满足时,如果加到最后一个数
if(index == nums.size()){
//最后的和为目标值则结果数++
if(sum == target) count++;
}
//当回溯条件不满足时
else{
//回溯,加法;这里sum初始为0,index为0,则需要加上nums[0]
backtrack(nums,target,index+1,sum+nums[index]);
//回溯,减法;这里sum初始为0,index为0,则需要加上nums[0]
backtrack(nums,target,index+1,sum-nums[index]);
}
}
};