ZSTUOJ刷题⑧:Problem G.--铺地砖

Problem G: 铺地砖

Time Limit: 1 Sec  Memory Limit: 64 MB
Submit: 6461  Solved: 2592

Description

元旦过去了,新年大酬宾活动也已经告一段落了。陈盖历望着堆在仓库的瓷砖,很无聊的他把这些瓷砖裁成很多1X1 1X2 1X3的小瓷砖,然后他把这些小瓷砖排在地上画的一个1*n的长方形里。问铺满这个长方形共有多少种方法?

Input

首先输入一个整数T,表示有T组测试数据 然后是T行,每行输入1个正整数n(n<=50)

Output

对于每个n输出铺的方法种数

Sample Input

3
1
2
3

Sample Output

1
2
4
这题要注意1+2和2+1是两种方法,不要像我一样傻乎乎┭┮﹏┭┮
这题通过枚举法可以发现从第四项开始,其值为前三项之和,可以使用递归,但递归时间效率太低,可以采用如下的数组的方法。
代码如下:
#include<bits/stdc++.h>
using namespace std;

int main(){
    int t;
    while(cin>>t){
        while(t--){
            int a[51]={1,2,4};
            int n;cin>>n;
            for(int i=3;i<n;i++){
                a[i]=a[i-1]+a[i-2]+a[i-3];
            }
            cout<<a[n-1]<<endl;
        }
    }
    
    return 0;
}

 

posted @ 2021-05-22 15:05  Ta7KiXuoul  阅读(149)  评论(0编辑  收藏  举报