관리 메뉴

Mini

백준 11727 2*n 타일링2 c++ // dp 본문

Algorithm/dp

백준 11727 2*n 타일링2 c++ // dp

Mini_96 2023. 10. 10. 14:21

https://www.acmicpc.net/problem/11727

 

11727번: 2×n 타일링 2

2×n 직사각형을 1×2, 2×1과 2×2 타일로 채우는 방법의 수를 구하는 프로그램을 작성하시오. 아래 그림은 2×17 직사각형을 채운 한가지 예이다.

www.acmicpc.net

 

1.전체코드

#include <bits/stdc++.h>
using namespace std;

long long d[1004],n; 
//2*i 직사각형을 채우는 방법의 수

//d[i]=
//첫째사각형 1*2인 경우 : d[n-2]
//첫째사각형 2*1인 경우 : d[n-1]
//첫째사각형 2*2인 경우 : d[n-2]

int main() {
	ios_base::sync_with_stdio(0);
	cin.tie(0);

	d[1] = 1;
	d[2] = 3;

	cin >> n;

	for (int i = 3; i <= n; ++i) {
		d[i] = (d[i - 2] + d[i - 1] + d[i - 2])%10007;
	}

	cout << d[n];
}