문제
2 x N 직사각형 모양의 칸이 있다. 이를 2 x 1 모양의 타일로 가득 채우려 한다. 가능한 경우의 수를 출력하는 프로그램을 작성하시오. 단, 가능한 경우의 수가 매우 많을 수 있으므로, 그 경우의 수를 1,000,007 로 나눈 나머지를 출력한다.
예를 들어, N = 3 일 경우에는 다음 세 가지의 가능한 경우가 존재한다.
입력
첫 번째 줄에 N이 주어진다. ( 1 ≤ N ≤ 100 )
출력
가능한 경우의 수를 1,000,007 로 나눈 나머지를 출력한다.
예제 입력
3
예제 출력
3
예제 입력
8
예제 출력
34
예제 입력
37
예제 출력
87896
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
|
#include<iostream>
using namespace std;
const int MAX = 105;
int n;
int t[MAX]={0,};
int main(){
cin>>n;
t[0] = 0;
t[1] = 1;
t[2] = 2;
for(int i=3; i<=n; i++){
t[i] = t[i-2] + t[i-1];
t[i] %= 1000007;
}
cout<<t[n]<<endl;
return 0;
}
|
'[C++] 알고리즘 교육 > 16. 동적계획법1' 카테고리의 다른 글
[알고리즘 16.1.5] 동적계획법 - 버튼누르기 (0) | 2019.08.12 |
---|---|
[알고리즘 16.1.4] 동적계획법 - 합병정렬구현하기 (0) | 2019.08.12 |
[알고리즘 16.1.3] 동적계획법 - 구슬게임 (0) | 2019.08.12 |
[알고리즘 16.1.2] 동적계획법 - 직사각형의합 (0) | 2019.08.12 |
[알고리즘 16.1.1] 동적계획법 - 숫자만들기 (0) | 2019.08.12 |
댓글