プログラマ-ターゲット番号(C++)


条件1-負でない整数配列とターゲット番号を指定します.
条件2-プラスマイナスで整数を求めて目標番号を生成する方法数
すなわち、各整数配列の値を加算すると、減算された総数が目標番号に等しい場合、総数が求められる.
DFSで簡単に解決できます.
#include <string>
#include <vector>
#include <algorithm>
#include <iostream>
using namespace std;

int ans = 0;

void DFS(vector<int> nums, int finalNum, int target) {   
    if (nums.size()==0 && finalNum == target) {
        ans++;
        return ;
    }
    
    if (nums.size()==0) 
        return;

    int plusSum = finalNum + nums[0];
    int minusSum = finalNum - nums[0];       
    nums.erase(nums.begin());                
    DFS(nums, plusSum, target);
    DFS(nums, minusSum, target);
}

int solution(vector<int> numbers, int target) {
    int answer = 0;
    DFS(numbers, 0, target);    
    answer = ans;
    return answer;
}