Hdoj 2501.Tiling_easy version 题解

Problem 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

Source

《ACM程序设计》短学期考试_软件工程及其他专业



思路

典型的铺骨牌题目,可参考(https://www.cnblogs.com/MartinLwx/p/9769122.html)

递推式:\(f[i] = f[i-1] + 2*f[i-2]\)

初始条件:\(f[1]=1,f[2]=3\)

代码

#include<bits/stdc++.h>
using namespace std;
__int64 f[31];
int main()
{
    int t;

    f[1] = 1; f[2] = 3;
    for(int i=3;i<=30;i++)
        f[i] = f[i-1] + 2*f[i-2]; 

    cin >> t;
    while(t--)
    {
        int tmp;
        cin >> tmp;
        cout << f[tmp] << endl;
    }
    return 0;
}

原文地址:https://www.cnblogs.com/MartinLwx/p/9800762.html

时间: 2024-11-09 13:30:37

Hdoj 2501.Tiling_easy version 题解的相关文章

hdu 2501 Tiling_easy version 递推

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2501 题目分析:已知有2*1,2*2,两种型号的瓷砖,要求铺满2*n的格子有多少种方法.可以考虑最左边一列的铺法,竖着铺的话,右边为f(n-1),只有一种铺法:横着铺的话,可以用一块2*2或者两块2*1的横铺, 右边为f(n-2), 有两种. 故递推公式为:f(n) = f(n-1) + 2*f(n-2) /*Tiling_easy version Time Limit: 1000/1000 MS

HDU - 2501 - Tiling_easy version (简单递推关系!!)

Tiling_easy version Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 5516    Accepted Submission(s): 4347 Problem Description 有一个大小是 2 x n 的网格,现在需要用2种规格的骨牌铺满,骨牌规格分别是 2 x 1 和 2 x 2,请计算一共有多少种铺设的方法

(hdu step 3.1.5)Tiling_easy version(求用2*1、2*2两种骨格铺满2*n的网格的方案数)

在写题解之前给自己打一下广告哈~..抱歉了,希望大家多多支持我在CSDN的视频课程,地址如下: http://edu.csdn.net/course/detail/209 题目: Tiling_easy version Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 515 Accepted Submission(s): 447   Prob

Tiling_easy version(填2 x N的格子的种类)

E - Tiling_easy version 题目大意: 有一个大小是 2 x n 的网格,现在需要用2种规格的骨牌铺满,骨牌规格分别是 2 x 1 和 2 x 2,请计算一共有多少种铺设的方法. 一个简单的dp问题: dp[i+2]=dp[i+1]+2*dp[i]; 初始条件:dp[1]=1;dp[2]=3; 一开始没考虑清楚,把递推关系写成dp[i+2]=3*dp[i]; 解释一下dp[i+2]=dp[i+1]+2*dp[i] dp[i+2]相对于dp[i]正好多一个2x2的正方形,当前

Tiling_easy version

Tiling_easy version 思路:关于dp这种东西,有一点必须要想明白,就是状态与状态之间的转换关系,就比如说要求5个骨牌的方案数,因为有两种骨牌,那么可以用dp[3]+两个横着的骨牌或者一个2*2的骨牌,或者是dp[4]+一个竖着的1*2骨牌来构成,那么递推的公式就是dp[5]=dp[3]*2+dp[4] 代码: // Created by CAD on 2019/10/10. #include <bits/stdc++.h> using namespace std; int d

Hdoj 1050.Moving Tables 题解

Problem Description The famous ACM (Advanced Computer Maker) Company has rented a floor of a building whose shape is in the following figure. The floor has 200 rooms each on the north side and south side along the corridor. Recently the Company made

Hdoj 1007 Quoit Design 题解

Problem Description Have you ever played quoit in a playground? Quoit is a game in which flat rings are pitched at some toys, with all the toys encircled awarded. In the field of Cyberground, the position of each toy is fixed, and the ring is careful

Hdoj 1159.Common Subsequence 题解

Problem Description A subsequence of a given sequence is the given sequence with some elements (possible none) left out. Given a sequence X = <x1, x2, ..., xm> another sequence Z = <z1, z2, ..., zk> is a subsequence of X if there exists a stri

Hdoj 1421.搬寝室 题解

Problem Description 搬寝室是很累的,xhd深有体会.时间追述2006年7月9号,那天xhd迫于无奈要从27号楼搬到3号楼,因为10号要封楼了.看着寝室里的n件物品,xhd开始发呆,因为n是一个小于2000的整数,实在是太多了,于是xhd决定随便搬2k件过去就行了.但还是会很累,因为2k也不小是一个不大于n的整数.幸运的是xhd根据多年的搬东西的经验发现每搬一次的疲劳度是和左右手的物品的重量差的平方成正比(这里补充一句,xhd每次搬两件东西,左手一件右手一件).例如xhd左手拿