반응형
정수 n을 1,2,3 조합으로 더하여 나타내는 가짓수를 t라 할때,
이때 n을 입력하였을 때 t를 출력하는 코드를 작성하라.
이때 정수 n은 양수이다.
ex)
n = 3이면
1 + 1 + 1 = 3
1 + 2 = 3
2 + 1 = 3
3 = 3
총 4가지이다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | #include <stdio.h> int cnt=0; void repeat(int n) { if(n == 0) cnt++; if(n - 3 >= 0) repeat(n - 3); if(n - 2 >= 0) repeat(n - 2); if(n - 1 >= 0) repeat(n - 1); } int main() { int num; int i; scanf("%d",&num); repeat(num); printf("%d\n",cnt); cnt = 0; return 0; } | Crocus |
재귀함수를 이용한다면 간단히 풀리는 알고리즘이다.
repeat라는 재귀함수를 통해 가장 큰 3값부터 이용하여 2,1순으로 재귀함수를 구현한다.
마지막에 n이 0이면 가짓수를 나타내는 cnt변수를 +1 해줌으로써
총 가짓수를 구할 수 있게 된다.
반응형
'Applied > 알고리즘 문제풀이' 카테고리의 다른 글
각 자릿수 내림차순 정렬 (0) | 2016.03.01 |
---|---|
문자열 뒤집기 응용 (0) | 2016.03.01 |
큰수 A+B (0) | 2016.01.25 |
오름차순으로 수 정렬하기 (1) | 2015.12.15 |
파도반 수열 (1) | 2015.12.12 |