문제
소스코드
#include<iostream>
#include <vector>
using namespace std;
void Recursive(int value, int index, vector<int>& numbers);
int g_answer, g_target;
int solution(vector<int> numbers, int target) {
g_target = target;
Recursive(0, 0, numbers);
return g_answer;
}
void Recursive(int value, int index, vector<int>& numbers) {
if (index == numbers.size()) {
if (value == g_target) {
++g_answer;
}
return;
}
Recursive(value - numbers[index], index + 1, numbers);
Recursive(value + numbers[index], index + 1, numbers);
}
후기
제한사항이 생각보다 적어서 탐색의 깊이는 따로 지정하지 않고 전부다 탐색하도록 하였다.
출처 및 레퍼런스
문제 링크:https://programmers.co.kr/learn/courses/30/lessons/43165
'온라인 코딩 > 재귀 호출(Recursive Call)' 카테고리의 다른 글
[백준] 10872번 팩토리얼 (0) | 2020.04.06 |
---|---|
[백준] 17269번 이름궁합 테스트 (0) | 2020.02.24 |
[백준] 1074번 Z (1) | 2020.01.11 |