#include <iostream> #include <algorithm> using namespace std; int N; int dp[35]; int solve(int num) { if(num == 0) { return 1; } else if(num == 2) { return 3; } if(dp[num] != 0) { return dp[num]; } dp[num] = solve(num-2)*3; for(int i = num; i >= 4; i -= 2) { dp[num] += solve(i-4)*2; } return dp[num]; } int main(void) { // freopen("B2133_input.txt", "r", stdin); cin >> N; if(N % 2 == 1) { cout << 0; } else { cout << solve(N); } return 0; } | cs |
'Baekjoon > DP' 카테고리의 다른 글
[백준 9461] 파도반 수열(DP) (C/C++) (0) | 2020.01.22 |
---|---|
[백준 2225] 합분해 (DP) (C/C++) (0) | 2020.01.22 |
[백준 1699] 제곱수의 합 (DP) (C/C++) (0) | 2020.01.21 |
[백준 2579] 계단 오르기 (DP) (C/C++) (0) | 2020.01.18 |
[백준 1912] 연속합 (DP) (C/C++) (★) (0) | 2020.01.18 |