递推--HDU 2501Tiling_easy version

来源:互联网 发布:最好的网络云盘 编辑:程序博客网 时间:2024/05/21 19:45


题目思路:


从后往前递推:

         (1)当最后是2*1的骨牌,则有f[i-1]种情况;

         (2)当最后是2*2的骨牌,则有f[i-2]种情况;

         (3)当最后是两个2*1的骨牌,则有f[i-2]种情况。

故推出来的递推公式为:f[i] = f[i-1] + 2 * f[i-2];



代码实现:


#include<iostream>

#include<cstdio>

#include<cstring>

using namespace std;


int main(){

     int T,N;//操作的个数和格子数

     int f[30];

     f[0]=0;

     f[1]=1;

     f[2]=3;

     for(int i=3;i<=30;i++)

          f[i] = f[i-1] + 2 * f[i-2];//最主要的递推公式

     scanf("%d",&T);

     while(T--){

         scanf("%d",&N);

         printf("%d\n",f[N]);

     }

     return 0;

}



0 0
原创粉丝点击