T - Tiling_easy version
有一个大小是 2 x n 的网格,现在需要用2种规格的骨牌铺满,骨牌规格分别是 2 x 1 和 2 x 2,请计算一共有多少种铺设的方法。
Input
输入的第一行包含一个正整数T(T<=20),表示一共有 T组数据,接着是T行数据,每行包含一个正整数N(N<=30),表示网格的大小是2行N列。
Output
输出一共有多少种铺设的方法,每组数据的输出占一行。
Sample Input
3
2
8
12
Sample Output
3
171
2731
思路:f(n)=f(n-1)+2*f(n-2)
上一步铺好:竖着放一块12
上一步没铺好:横着放俩块12或者放一个2*2
cpp
#include<iostream>
using namespace std;
int main(){
int t;
cin>>t;
int n;
while(t--){//递推
cin>>n;
int num[n];
num[0]=1;
num[1]=3;
for(int i=2;i<n;i++){
num[i]=num[i-1]+2*num[i-2];
}
cout<<num[n-1]<<endl;
}
return 0;
}