코드
#include <iostream>
using namespace std;
int dp[31];
int main(){
int n;
cin >> n;
dp[0] = 1;
dp[1] = 0;
dp[2] = 3;
if(n%2 == 1) cout << "0";
else{
for(int i = 4; i <= n; i = i+2){
dp[i] = 3*dp[i-2];
for(int j = i-4; j >=0 ; j = j - 2){
dp[i] += 2* dp[j];
}
}
cout << dp[n];
}
return 0;
}
알게된 점
참.. 이게 수학문젠지 알고리즘문제인지..
점화식을 생각하는게 참 어렵습니다.
dp는 점화식 생각이 참 중요한 문제 같습니다..
'하루하나코딩' 카테고리의 다른 글
백준 1520 : 내리막 길 (0) | 2023.01.17 |
---|---|
백준 11047 : 동전 0 c++ (0) | 2023.01.13 |
백준 2294 : 동전 2 c++ (0) | 2023.01.13 |
백준 9461 : 파도반 수열 c++ (0) | 2023.01.12 |
백준 2293 : 동전 1 c++ (0) | 2023.01.11 |