개발/알고리즘

[재귀] upstair

재근이 2015. 1. 23. 05:07
반응형
프로그램 명: upstair
제한시간: 1 초

최대 2 칸 까지 오를 수 있을 때 오르는 방법의 가짓수를 출력 하는 문제이다.

그림은 n 이 4 인 경우의 예 이다.

  • 1 - 2 - 3 - 4
  • 1 - 2 - 4
  • 1 - 3 - 4
  • 2 - 3 - 4
  • 2 - 4

입력

n 은 30 이하의 양의 정수이다.

출력

오를 수 있는 가짓 수를 출력한다.

입출력 예

입력

4

출력

5


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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
#include <stdio.h>
 
#define MAX 31
 
int Num;
int stack[MAX];
int Count;
 
void input()
{
    scanf("%d", &Num);
}
 
void dfs(int depth, int value)
{
    int i;
    
    if(value == Num)
    {
        /*for(i=1; i<=depth; i++)
        {
            printf("%d ", stack[i]);
        }
        printf("\n");*/
        Count++;
        return;
    }
    else if(value > Num)
        return;
 
    stack[depth+1] = value+1;
    dfs(depth+1, value+1);
 
    stack[depth+1] = value+2;
    dfs(depth+1, value+2);
}
 
 
int main(void)
{
    input();
    dfs(00);
    printf("%d\n", Count);
    return 0;
}
cs


반응형

'개발 > 알고리즘' 카테고리의 다른 글

[greedy method] 스노보드/snowboard  (0) 2015.02.12
[bfs] dam  (0) 2015.02.06
[backtracking] eating_puzzle  (0) 2015.01.23
[dfs] maze (최단 거리 찾기)  (0) 2015.01.23
[dfs] orders (알파벳 사전식 정렬)  (0) 2015.01.23