您的位置:首页 > 其它

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]

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;
}


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: