我们可以看到,假设当前为2*n
则这n可以有n-1加一个竖的和n-2时加两个横的,并且这两个是不可能重复的,因为多出来一行,1*2的矩形根本放不进去,
也不可能再有其他的放置方法,这也是由最小单位是1*2的矩形这一条件决定
#include <iostream>
#include <cstdio>
using namespace std;
int n;
long long int arr[100];
long long int f(int a)
{
if(a==1)
return 1;
if(a==2)
return 2;
if(arr[a-1]!=0 && arr[a-2]!=0)
return arr[a-1] + arr[a-2];
arr[a-1]=f(a-1);
arr[a-2]=f(a-2);
return arr[a-1] + arr[a-2];
}
int main()
{
while(cin>>n)
{
for(int i=0;i<100;i++)
arr[i] = 0;
arr[1] = 1;
arr[2] = 2;
cout<<f(n)<<endl;
}
}