题目大意:有一个大小是 2 x n 的网格,现在需要用2种规格的骨牌铺满,骨牌规格分别是 2 x 1 和 2 x 2,请计算一共有多少种铺设的方法。
解题思路:根据最后一列方格,可以是一个1x2的骨牌,此时有f(n-1)种方法,可以是两个横着的,此时有f(n-2)种方法,也可以是一个2x2的骨牌,此时有f(n-2)种方法。
代码:
#include<iostream>
#include<algorithm>
using namespace std;
int main()
{
int n;
cin>>n;
while(n--)
{
int m;
cin>>m;
long long int a[31];
a[1]=1;
a[2]=3;
for(int i=3;i<=m;i++)
{
a[i]=a[i-1]+2*a[i-2];
}
cout<<a[m]<<endl;
}
return 0;
}