[๋ฐฑ์ค(BOJ)] 2133๋ฒ: ํ์ผ ์ฑ์ฐ๊ธฐ (Dynamic Programming, C++)
N์ด ํ์์ธ ๊ฒฝ์ฐ
N์ด ์ง์์ธ ๊ฒฝ์ฐ
#include <stdio.h>
#include <deque>
using namespace std;
int main(){
int N;
scanf("%d", &N);
deque<int> DP(N+1, 0);
DP[0] = 1;
DP[2] = 3;
if(N%2 !=0 ) DP[N] = 0; // N == ํ์
// N == ์ง์
for(int i=4; i<=N; i+=2){
DP[i] = DP[i-2]*3;
for(int j=i-4; j >= 0; j -= 2) DP[i] += DP[j]*2;
}
printf("%d", DP[N]);
}
DP[0]์ 2์ธ ๊ฒฝ์ฐ์ ํ์ํ๋ฏ๋ก 1๋ก ์ด๊ธฐํํด์ค๋ค.