暑假集训第四周周三赛 B - Tiling_easy version骨牌 递推


B - Tiling_easy version
Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u
Submit  Status  Practice  HDU 2501

Description

有一个大小是 2 x n 的网格,现在需要用2种规格的骨牌铺满,骨牌规格分别是 2 x 1 和 2 x 2,请计算一共有多少种铺设的方法。 
 

Input

输入的第一行包含一个正整数T(T<=20),表示一共有 T组数据,接着是T行数据,每行包含一个正整数N(N<=30),表示网格的大小是2行N列。 
 

Output

输出一共有多少种铺设的方法,每组数据的输出占一行。 
 

Sample Input

      
      
      
      
3 2 8 12
 

Sample Output

      
      
      
      
3 171 2731
分析:

其实我没有什么好的理解,只能靠一个一个的去推,等有了好方法再回来补充

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include<stdio.h>
int main()
{
    int  t,i,n,a[35];
    scanf("%d",&t);
    while(t--)
    {
        scanf("%d",&n);
        a[1]=1,a[2]=3;
        for(i=3;i<=n;i++)
            a[i]=a[i-1]+2*a[i-2];
        printf("%d\n",a[n]);
    }
    return 0;
}

你可能感兴趣的:(dp)