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 |