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 }
原文地址:https://www.cnblogs.com/quantumplan/p/3070711.html