알고리즘 문제풀이/백준
[백준 11726] 2n 타일링
홍시홍
2020. 3. 26. 21:33
분류 : dp
요구사항
2*1, 1*2의 타일으로 n열의 타일을 구할 수 있는 경우의 수 구하기
풀이
1열은 세로 하나로 가능하다
2열은 세로 2개 혹은 가로 2개로 가능하다
3열은 1열에다가 2열을 붙이거나 2열에다가 1열을 붙였을 경우 가능하다
일반화 시켜보면 피보나치 수열처럼된다.
d[n] = d[n-1] +d[n-2]가 된다
#include <iostream>
#include <string.h>
#include <queue>
//#include "windows.h"
#include <algorithm>
#include <list>
using namespace std;
int d[1014];
int main(){
int n;
scanf("%d",&n);
d[1]=1;
d[2]=2;
if(n>=3){
for(int i=3 ; i <=n ; i++){
d[i]= (d[i-2] +d[i-1])%10007;
}
}
cout<<d[n]<<endl;
}