백준 알고리즘 기초 강좌
3장 다이나믹 프로그래밍 - (5) 문제 풀이 2 [2133번 - 타일 채우기]
살구르
2017. 8. 25. 17:03
#include <iostream>
using namespace std;
int d[31];
int main(void){
int n;
cin >> n;
// d[n]=3*d[n-2]+2*d[n-4]+2*d[n-6]+...+2*d[0]
d[0]=1;
d[2]=3;
for(int i=4;i<=n;i+=2){
d[i]=3*d[i-2];
for(int j=2;2*j<=i;j++){
d[i]+=2*d[i-2*j];
}
}
cout << d[n] << endl;
return 0;
}