hdoj 2501 Tiling_easy version(递推)
来源:互联网 发布:stussy 正品淘宝 编辑:程序博客网 时间:2024/05/22 00:14
Tiling_easy version
Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 5061 Accepted Submission(s): 3997
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
32812
Sample Output
31712731
AC CODE:
#include<stdio.h>int main(){ int i,t,a[31]={1,3,5}; for(i=3;i<31;i++) a[i]=a[i-1]+2*a[i-2]; scanf("%d",&t); while(t--) { int n; scanf("%d",&n); printf("%d\n",a[n-1]); } return 0;}
解释:假设2*n个空间,已知a[n-1]和a[n-2]。
(1)、先把2*(n-1)放在空间的上方,那么剩余的2*1的空间只能放一个横放的2*1,这里有a[n-1]种。
(2)、先把2*(n-2)放在空间的上方,那么剩余的2*2的空间可以放两个横放的2*1,两个竖放的2*1,一个2*2,共3种,但是,注意的是,两个横放的2*1这种情况与(1)的重复,so,只有两种情况符合,这里有2*a[n-2]种 so,a[n]=a[n-1]+2*a[n-2]
0 0
- hdoj 2501 Tiling_easy version(递推)
- HDOJ 2501 Tiling_easy version(递推)
- HDOJ-2501-Tiling_easy version
- HDOJ 2501 Tiling_easy version
- hdoj 2501 Tiling_easy version
- HDOJ.2501 Tiling_easy version
- HDOJ-2501 Tiling_easy version
- HDU 2501 Tiling_easy version 骨牌递推
- HDU 2501--Tiling_easy version【递推】
- HDU-2501 Tiling_easy version 递推
- HDU 2501 Tiling_easy version (递推)
- HDU-2501 Tiling_easy version(递推)
- HDU 2501-Tiling_easy version(递推)
- 递归及递推问题系列之 Tiling_easy version hdoj 2501
- HDU - 2501 - Tiling_easy version (简单递推关系!!)
- 递推--HDU 2501Tiling_easy version
- ACMSTEP 3.1.4 Tiling_easy version //递推
- HDOJ 2501 Tiling_easy version
- Merge into的使用的例子
- android studio快捷键中英文对照,一些使用技巧,一些设置
- HDU 1058 Humble Numbers(DP,数)
- 端到端的通信
- Spark 与Storm 异同
- hdoj 2501 Tiling_easy version(递推)
- hdu 4026 Unlock the Cell Phone(DP-状态DP)
- 如何通过创建一个Fraction类(分数)来实现分数的加减乘除,比较大小、约分等方法(方法的实现部分)
- Transaction rolled back because it has been marked as rollback-only
- 远程桌面连接窗口与主机不同步解决办法
- linux下tomcat服务的启动、关闭与错误跟踪
- Java IO 的一般使用原则:
- vector向量容器
- 开启新的activity获取他的返回值