HDU 2046 骨牌铺方格
2015-07-12 12:16
316 查看
[align=left]Problem Description[/align]
在2×n的一个长方形方格中,用一个1× 2的骨牌铺满方格,输入n ,输出铺放方案的总数.
例如n=3时,为2× 3方格,骨牌的铺放方案有三种,如下图:
[align=left]Input[/align]
输入数据由多行组成,每行包含一个整数n,表示该测试实例的长方形方格的规格是2×n (0<n<=50)。
[align=left]Output[/align]
对于每个测试实例,请输出铺放方案的总数,每个实例的输出占一行。
[align=left]Sample Input[/align]
[align=left]Sample Output[/align]
在2×n的一个长方形方格中,用一个1× 2的骨牌铺满方格,输入n ,输出铺放方案的总数.
例如n=3时,为2× 3方格,骨牌的铺放方案有三种,如下图:
[align=left]Input[/align]
输入数据由多行组成,每行包含一个整数n,表示该测试实例的长方形方格的规格是2×n (0<n<=50)。
[align=left]Output[/align]
对于每个测试实例,请输出铺放方案的总数,每个实例的输出占一行。
[align=left]Sample Input[/align]
1 3 2
[align=left]Sample Output[/align]
1 3 2
分析:本题是斐波那契数列的应用,当n=N时,在第N列与第N-1列方格中有两种铺放方法,一种方法是骨牌竖放在第N列方格中,另一种方法是两个骨牌横放在第N列与第N-1列方格中
则N列方格的总铺放方法等于N-1列方格的铺放方法与N-2列方格的铺放方法之和,即a
=a[n-1]+a[n-2](a[1]=1;a[2]=2)上代码:#include<stdio.h>
_int64 a[50];
int main()
{
int i;
a[0]=1;
a[1]=2;
for(i=2;i<50;i++)
a[i]=a[i-1]+a[i-2];
while(scanf("%d",&i)!=EOF)
printf("%I64d\n",a[i-1]);
return 0;
}
相关文章推荐
- jQuery之常用且重要方法梳理(target,arguments,slice,substring,data,trigger,Attr)-(一)
- TestNG - Logger类的使用
- genstrings本地化工具的使用以及本地化
- 终于有SpringMvc与Struts2的对比啦
- 浅拷贝 和深拷贝
- 闭包小demo
- 机器学习&数据挖掘常用知识点
- 深入理解Java中的Lambda表达式
- (7.2.8)SQL Server 数据库定时自动备份
- 字符串操作
- 字符串操作
- 网站优化实战--解决网站动态压缩过程
- Kinect v2.0原理介绍之三:骨骼跟踪的原理
- MVC两个必懂核心
- "Permission denied: '/usr/local/man/man1/nosetests.1'"解决方法
- C++ Primer 学习笔记_98_特殊的工具和技术 --优化内存分配
- 学习笔记-NoSQL
- EFM8单片机与I2C外设通信
- Spring笔记之配置数据源
- Ubuntu安装JDK