(step3.1.3)hdu 2046(骨牌铺方格)
来源:互联网 发布:知乎首页代码 编辑:程序博客网 时间:2024/05/20 04:12
题目大意: 输入长方形方格的长。输出铺满长方形方格共有多少种铺法。。。
解题思路:
1、从图中也可以观察出来,第N张牌的排列可以又N-1张牌的排列再在末尾加上一张竖的牌。这样依然合法。
也可以在N-2张合法排列的牌后面加上两张横着放的牌(如果竖着放就和上面一种重复了)。
所以f(n) = f(n-1) + f(n-2)
即又是一个斐波那契数列。
注意:我是打表做的,竟然要用到__int64 。没用这个AC不了。
2、摆放第n块的时候,第n-1块可以不动,直接方上第n块,也可以将第n-1块横过来,这样也可以放入第n块。
递推公式为:f(n)=f(n-1)+f(n-2).
算法:N个前面有二种做法,1.前面做好了N-1个,则再加一个格子只有一种做法,(N-1)*1
2.前面N-2个已经排好,再加二个格子,只有一种做法(横排,若是竖排则与第一种做法相同),(N-1)*1
加法原理f(n)=f(n-1)+f(n-2)
代码如下:
/* * 2046_1.cpp * * Created on: 2013年8月12日 * Author: Administrator */ 我喜欢章泽天。。。。。。#include <stdio.h>#include <string.h>int main(){__int64 fib[51];memset(fib,0,sizeof(fib));fib[1] = 1;fib[2] = 2;int i ;for( i = 3 ; i <= 50 ; ++i){fib[i] = fib[i-1] + fib[i-2];}int n;while(scanf("%d",&n)!=EOF){printf("%I64d\n",fib[n]);}}
- (step3.1.3)hdu 2046(骨牌铺方格)
- hdu 2046骨牌铺方格
- hdu 2046骨牌铺方格
- HDU--2046骨牌铺方格
- HDU 2046 骨牌铺方格
- hdu 2046 骨牌铺方格
- HDU-2046骨牌铺方格
- HDU 2046 骨牌铺方格
- HDU 2046 - 骨牌铺方格
- HDU 2046骨牌铺方格
- HDU 2046 骨牌铺方格。
- HDU 2046 骨牌铺方格
- [hdu-2046] 骨牌铺方格
- HDU 2046 骨牌铺方格
- HDU 2046 骨牌铺方格
- HDU 2046 骨牌铺方格
- hdu 2046 骨牌铺方格
- hdu-2046-骨牌铺方格
- note : append menu to menu on right click menu
- 黑马程序员--基础学习总结之集合
- 反射中方法的获取和执行
- 隐马尔可夫模型(HMM)攻略
- java环境配置
- (step3.1.3)hdu 2046(骨牌铺方格)
- 原生Javascript操作DOM的一些常用方法集合
- Apache负载均衡的三大规则
- 追寻我的梦
- HTML中form标签
- 14. 代码审查
- [每日一题] OCP1z0-047 :2013-08-12 view视图的描述哪些是正确的?...............................32
- objective-c 参考学习资料---来自台湾海峡兄弟
- 【C基础】动态内存分配