#include <iostream> #include <algorithm> using namespace std; #define MOD 1000000000 int N; int sum; long long dp[110][11]; int solve(int cnt, int num) { if(cnt == 1) { return num == 0 ? 0 : 1; } if(dp[cnt][num] != 0) { return dp[cnt][num]; } if(num == 0) { dp[cnt][num] = solve(cnt-1, num+1) % MOD; } else if(num == 9) { dp[cnt][num] = solve(cnt-1, num-1) % MOD; } else { dp[cnt][num] = (solve(cnt-1, num-1) + solve(cnt-1, num+1)) % MOD; } return dp[cnt][num]; } int main(void) { // freopen("B10844_input.txt", "r", stdin); cin >> N; for(int i = 0; i <= 9; i++) { sum = (sum + solve(N, i)) % MOD; } cout << sum; return 0; } | cs |
'Baekjoon > DP' 카테고리의 다른 글
[백준 2193] 이친수 (DP) (C/C++) (0) | 2020.01.17 |
---|---|
[백준 11057] 오르막 수 (DP) (C/C++) (★) (0) | 2020.01.17 |
[백준 9095] 1, 2, 3 더하기 (DP) (C/C++) (0) | 2020.01.16 |
[백준 11727] 2xN 타일링2 (DP) (C/C++) (0) | 2020.01.16 |
[백준 11726] 2xN 타일링 (DP) (C/C++) (0) | 2020.01.16 |