题意:一个3*N的矩形用2*1的矩形可以有好多种方法填满。。
思路:当N为奇数时,肯定是没有一种方法可以填满,所以为0;当N为偶数时,除了F[2]*3,其余都是乘2(这是特殊情况),不怎么好表达,题目中图,那就是乘2的情况;
代码:
#include<iostream>
#include<stdio.h>
#include<string.h>
using namespace std;
int main()
{
int n,f[31],i,j;
while(cin>>n)
{
if(n==-1)
break;
memset(f,0,sizeof(f));
f[0]=1;
for(i=2;i<=30;i+=2)
{
for(j=2;j<=i;j+=2)
{
if(j==2)
f[i]+=3*f[i-j];
else
f[i]+=2*f[i-j];
}
}
cout<<f[n]<<endl;
}
return 0;
}