Tanky WooRSS

HDOJ 2046 骨牌铺方格

23 Jul 2010
这篇博客是从旧博客 WordPress 迁移过来,内容可能存在转换异常。

题目地址:

http://acm.hdu.edu.cn/showproblem.php?pid=2046

思路:

考虑有2*n个,以最左边考虑,

假设2*n有F[n]个,

当最左边是竖时,则剩余的n-1列有f[n-1]种排列;

当最左边是2个横时,则剩余的n-2列有f[n-2]中排列。

递推的题目再可以做做:

http://www.wutianqi.com/?p=409

代码:

 // Author: Tanky Woo
// HDOJ 1465

#include 
using namespace std;

__int64 f[52];

int main()
{
    f[1] = 1;
    f[2] = 2;
    f[3] = 3;
    for(int i=4; i<=50; ++i)
        f[i] = f[i-1]+f[i-2];
    int num;
    while(scanf("%d", &num;) != EOF)
        printf("%I64d\n", f[num]);
    return 0;
} 

注意:这里和 HDOJ 1465都用了**int64**,因为int的32位不够,对于其用法大家可以百度学习下。