문제 :
https://www.acmicpc.net/problem/9095
소스 :
#include <iostream>
using namespace std;
int c;
int arr[3] = { 1,2,3 };
void solution(int index, int v, int sum)
{
//탈출조건
if (v == sum)
{
c++;
return;
}
if (v < sum)
{
return;
}
for (int i = 0; i < 3; i++)
{
//방안 1(재귀를 탈출해서 다시 for문을 수행시 이전에 계산한 값이 sum에 저장되어있음. 그래서 문제였음.)
/*int num = sum;
num += arr[i];
solution(i, v, num);*/
//방안 2
sum += arr[i];
solution(i, v, sum);
sum -= arr[i];
}
}
int main()
{
int n;
cin >> n;
int i = 0;
while (i < n)
{
int v;
cin >> v;
c = 0;
int s = 0;
solution(0, v, s);
cout << c << endl;
i++;
}
return 0;
}
'algorithm > ACMICPC' 카테고리의 다른 글
다음 순열 - 10972 (0) | 2019.11.19 |
---|---|
차이를 최대로 - 10819 (0) | 2019.11.19 |
일곱 난쟁이 - 2309 (0) | 2019.11.19 |
날짜 계산 - 1476 (0) | 2019.11.19 |
N과 M (12) - 15666 (0) | 2019.11.14 |
댓글