알고리즘/DP
BOJ)10844 쉬운 계단 수(다시보기)
광그로
2017. 6. 21. 11:28
https://www.acmicpc.net/problem/10844
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 46 47 | #include <iostream> #include <algorithm> using namespace std; //다시보기 long long dp[101][10]; #define MOD 1000000000 int main() { int n; cin >> n; for (int i = 1; i < 10; i++) { dp[1][i] = 1; } for (int i = 2; i <= n; i++) { for (int j = 0; j < 10; j++) { dp[i][j] = 0; if (j - 1 >= 0) dp[i][j] += dp[i - 1][j - 1]; if (j + 1 <= 9) dp[i][j] += dp[i - 1][j + 1]; dp[i][j] %= MOD; //dp[i][j] = dp[i - 1][j - 1] + dp[i-1][j+1]; } } long long res = 0; for (int i = 0; i < 10; i++) res += dp[n][i]; cout << res % MOD; } /* dp[3] 0 - 1 dp[2] 1 - 0, 2 2 - 1, 3 3 - 2, 4 4 - 3, 5 5 - 4, 6 6 - 5, 7 7 - 6, 8 8 - 7, 9 9 - 8 */ | cs |