본문 바로가기

알고리즘/다이나믹 프로그래밍

[B15990] - 1,2,3 더하기 5

https://www.acmicpc.net/problem/15990

마지막항이 무엇인지 고려하여 점화식을 세우면 된다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include<iostream>
using namespace std;
long long d[100001][4];
int main() {
    int T;
    cin >> T;
    d[1][1= d[2][2= d[3][3= 1;
    d[3][1= d[3][2= 1;
    for (int i = 4; i <= 100000++i) {
        d[i][1= (d[i - 1][2+ d[i - 1][3]) % 1000000009;
        d[i][2= (d[i - 2][1+ d[i - 2][3]) % 1000000009;
        d[i][3= (d[i - 3][1+ d[i - 3][2]) % 1000000009;
    }
    while (T--) {
        int n;
        cin >> n;
        cout << (d[n][1+ d[n][2+ d[n][3]) % 1000000009 << '\n';
    }
}
cs


'알고리즘 > 다이나믹 프로그래밍' 카테고리의 다른 글

[B1463] - 1로 만들기  (0) 2018.11.12
[B1520] - 내리막길  (0) 2018.09.16
[B9465] - 스티커  (0) 2018.09.09