Chinaunix首页 | 论坛 | 博客
  • 博客访问: 12255
  • 博文数量: 8
  • 博客积分: 280
  • 博客等级: 二等列兵
  • 技术积分: 90
  • 用 户 组: 普通用户
  • 注册时间: 2009-05-05 22:44
文章分类

全部博文(8)

文章存档

2011年(1)

2009年(7)

我的朋友
最近访客

分类: C/C++

2009-05-08 23:02:52

Problem Description
 
Date:
2009 / 05 / 08
 
Problem Analysis:
递推的题目。
从图中也可以观察出来,第N张牌的排列可以又N-1张牌的排列再在末尾加上一张竖的牌。这样依然合法。
也可以在N-2张合法排列的牌后面加上两张横着放的牌(如果竖着放就和上面一种重复了)。
所以f(n) = f(n-1) + f(n-2)
即是一个斐波那契数列。 用64位存哦。
 
Code:
 
#include
#include

int
main(void)
{

    int
i;
    __int64
d[51] = {1, 1, 2,};

    for
(i = 3; i < 51; i++)
        d[i] = d[i-1] + d[i-2];
    while
(scanf("%d", &i) != EOF)
        printf("%I64d\n", d[i]);

    return
0;
}
 
@fleap
阅读(250) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~