본문 바로가기
온라인저지

[BOJ] 2133번: 타일 채우기

by plzfday 2018. 5. 31.

2133번: 타일 채우기

풀이

f(2)를 계산하고 바로 D[n]=3∗D[n−2]D[n] = 3 * D[n - 2]D[n]=3∗D[n−2]라고 생각할 수 있지
2(D[n−4]+D[n−6]+D[n−8]+...)2(D[n - 4] + D[n - 6] + D[n - 8] + ... )2(D[n−4]+D[n−6]+D[n−8]+...)0이상까지 추가로 더해야 줘야 한다.

그 이유는 힌트 속 그림에 있다.

코드

#include <cstdio>

int n, dp[10001] = {1, 0, 3};

int main()
{
    scanf("%d", &n);
    for (int i = 4; i <= n; ++i)
    {
        dp[i] = 3 * dp[i - 2];
        for (int j = 4; j <= i; j += 2)
        {
            dp[i] += 2 * dp[i - j];
        }
    }
    printf("%d\n", dp[n]);
    return 0;
}

 

'온라인저지' 카테고리의 다른 글

10844번: 쉬운 계단 수  (0) 2018.06.01
[BOJ] 2718번: 타일 채우기  (0) 2018.05.31
[BOJ] 1520번: 내리막 길  (0) 2018.05.31
[BOJ] 2355번: 시그마  (0) 2018.05.26
[BOJ] 2941번: 크로아티아 알파벳  (0) 2018.05.26
[BOJ] 1026번: 보물  (0) 2018.05.25

댓글