#include <string>
#include <vector>
using namespace std;
 
vector<int> copy_numbers;
int copy_target;
 
int result[20];
int answer;
 
void DFS(int cnt)
{
    if(cnt == copy_numbers.size())
    {
        int num = 0;
        
        for(int j = 0; j < cnt; j++)
        {
            num += result[j];
        }
        
        if(num == copy_target)
        {
            answer++;
        }
        
        return;
    }
 
    for(int i = 0; i < 2; i++)
    {
        if(i == 0)
        {
            result[cnt] = copy_numbers[cnt];
            DFS(cnt+1);
        }
        else if(i == 1)
        {
            result[cnt] = -copy_numbers[cnt];
            DFS(cnt+1);
        }
    }
}
 
int solution(vector<int> numbers, int target) 
{
    copy_numbers = numbers;
    copy_target = target;
    
    DFS(0);
    
    return answer;
}
cs

+ Recent posts