Leetcode刷题笔记题解(C++):LCR 102. 目标和

Leetcode刷题笔记题解(C++):LCR 102. 目标和_第1张图片

思路:利用回溯去遍历,回溯结束条件为遍历到最后一个数字,如果符合target则目标数+1

class Solution {
public:
    //记录合为结果的数量
    int count = 0;
    int findTargetSumWays(vector& nums, int target) {
        //利用回溯来寻找
        backtrack(nums,target,0,0);
        return count;
    }
    void backtrack(vector& 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]);
        }
    }
};

你可能感兴趣的:(Leetcode算法题解,leetcode,笔记,c++)