思路:利用回溯去遍历,回溯结束条件为遍历到最后一个数字,如果符合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]);}}
};