【Leetcode】494. ターゲットと(再帰)


タイトルの説明
非負の整数配列,a 1,a 2,...,an,およびターゲット数,Sが与えられる.2つの記号+と-があります.配列内の任意の整数について、+または-から記号を選択して前に追加できます.最終配列と目標数Sのすべてのシンボルを追加できるメソッド数を返します.例:
入力:nums:[1,1,1,1,1,1],S:3出力:5解釈:-1+1+1+1+1=3+1+1+1+1+1=3+1+1+1+1+1+1=3+1+1+1+1+1+1=3+1+1+1+1=3の5つの方法で最終目標とを3にします.
ヒント:
配列は空ではなく、長さは20を超えません.初期の配列の和は1000を超えません.返される最終結果が32ビット整数で保存されることを保証します.
ACコード:
class Solution {
     
public:
    void recur(vector<int>& nums,int n,int S,int sum,int step,int &ans){
     
    if(n==step){
     
    ans+=sum+nums[step]==S;
    ans+=sum-nums[step]==S; 
    return;
    }
    recur(nums,n,S,sum+nums[step],step+1,ans);
    recur(nums,n,S,sum-nums[step],step+1,ans);
    return;
    } 
    int findTargetSumWays(vector<int>& nums, int S) {
     
    int n=nums.size()-1;
    int ans=0;
    recur(nums,n,S,0,0,ans);
    return ans;
    }
};