hdu 2190 重建希望小学
递推式:f[i]=f[i-1]+2*f[i-2]
分两种情况1、对于f[i-1],只剩下1米,只能铺三个1*1的了,共f[i-1]种
2、对于f[i-2],有三种铺法,a、上边一个2*2,下边两个1*1;b、上边两个1*1,下边一个2*2;c、六个1*1;不过c情况跟第一种情况重复了,所以共2*f[i-2]种
1 #include<stdio.h>
2 int main()
3 {
4 long f[35]={0,1,3};
5 long i,n,a;
6 scanf("%ld",&n);
7 for(i=3;i<35;i++)
8 f[i]=f[i-1]+2*f[i-2];
9 while(n--)
10 {
11 scanf("%ld",&a);
12 printf("%ld\n",f[a]);
13 }
14 return 0;
15 }