很明显若n为奇数肯定放不满(总面积为奇数而砖的面积为偶数)
所以可以将长度为2的面积(3*2)看做一个单位每次都增加这样一个单位(不可能增加奇数长度),这样一个单位单独放有3种方法,
然后考虑两个单位放在一起出现的放法,首先两个单位互不“干扰”就有3*3种,有砖横跨两个单位的只有2种那么就是3*3+2=11种,
然后继续放一个单位,先考虑之前部分(3*4)和新放的单位互不干扰,就有11*3种,然后考虑横跨的横跨两个单位的话那么这两个
单位就只有两种放法,然后乘上第一个没被横跨的单位即2*3=6种,横跨3个单位那么这三个单位就只有2种放发,总共3*11+2*3+2=41种
、、、、就这样递推下去
因为n奇数答案都为0
令n/=2
则有f(n)=3*f(n-1)+2*f(n-2)+2*f(n-3)+...+2*f(1)+2
化简下就是f(n)=4*f(n-1)-f(n-2)
#include<stdio.h>
#include<string.h>
#define MAXN 20
int ans[MAXN];
int main()
{
ans[0]=1;//不懂这个数据想表达什么?为什么不是0?
ans[1]=3,ans[2]=11;
for(int i=3;i<=15;i++)
ans[i]=ans[i-1]*4-ans[i-2];
int n;
while(scanf("%d",&n)!=EOF&&(n!=-1))
{
if(n%2) printf("0\n");
else printf("%d\n",ans[n/2]);
}
return 0;
}