Programmersターゲット番号


単純な回帰で解けた簡単に考えると簡単に考えるのが難しいと難しい問題のようです
  • 数字は動かず、記号のみを動かす
  • 使用
  • 재귀それぞれ2つの再帰路を入れる+- 、該当数を入れるとtarget値に比べて増加answer
  • 💻 完全なコード

    #include <string>
    #include <vector>
    
    using namespace std;
    
    int answer = 0;
    
    void dfs(vector<int>numbers, int target, int sum, int depth)
    {
        if(depth==numbers.size())
        {
            if(sum==target) answer++;
            return;
        }
        dfs(numbers,target, sum+numbers[depth], depth+1);
        dfs(numbers,target, sum-numbers[depth], depth+1);
    }
    
    int solution(vector<int> numbers, int target) {
        
        dfs(numbers,target, 0,0);
        
        return answer;
    }