统计每个月兔子的总数【斐波那契】

原创 2017年01月03日 19:47:05

题目

描述

有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?

输入

输入int型表示month

输出

输出兔子总数int型

样例输入

9

样例输出

34

思路

斐波那契数列。。。
第一个月 1对兔子
第二个月 1对兔子
第三个月 2对兔子
第四个月 3对兔子
。。。。

代码

#include <iostream>
using namespace std;
int Facbonali(int num)
{
    if(num==0)
    {
        return 0;
    }
    else if(num==1)
    {
        return 1;
    }
    else
    {
        return Facbonali(num-1)+Facbonali(num-2);
    }

}
int main()
{
    int N;
    cin>>N;
    cout<<Facbonali(N)<<endl;
}

说到斐波那契数列

Fibonacci数列定义为:f(n) = f(n-1) + f(n-2), f(0) = 0, f(1) = 1;问题:输入n,请给出求f(n)的时间复杂度不超过O(logn)的算法。

首先,我们构造两个向量v1=(f(n+1), f(n))和v2=(f(n+2), f(n+1)),根据Fibonacci
数列性质,我们可以得到从v1到v2的递推变换矩阵:

[f(n+2)f(n+1)]=[1110][f(n+1)f(n)]

并进一步得到:

[f(n+1)f(n)]=[1110]n[f(1)f(0)]

这样就把线性递推问题转化为了矩阵的n次幂经典问题,在O(log n)时间复杂度内解决。除了线性递推数列,初等数学中著名的n元一次方程组问题也可以转化为矩阵和向量乘法形式更容易地解决。这个例子是想说明,凡是满足线性关系的系统都是向量模型的用武之地,我们往往可以把它转化为线性代数得到简洁高效的解决方案。



详情可以参考:

参考资料:斐波那契数列http://www.hawstein.com/

版权声明:本文为博主原创文章,欢迎转载,分享是一种态度。

相关文章推荐

华为机试:统计每个月兔子的总数、 字符串运用-密码截取

1.统计每个月兔子的总数 题目描述 有一只兔子,从出生后第3个月起每个月都生一只兔子,小兔子长到第三个月后每个月又生一只兔子,假如兔子都不死,问每个月的兔子总数为多少?       /**...

【华为OJ】【029-统计每个月兔子的总数】

【华为OJ】【算法总篇章】【华为OJ】【029-统计每个月兔子的总数】【工程下载】题目描述有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每...

[编程题]统计每个月兔子的总数

有一只兔子,从出生后第3个月起每个月都生一只兔子,小兔子长到第三个月后每个月又生一只兔子,假如兔子都不死,问每个月的兔子总数为多少?...

计算每个月兔子个数(华为OJ平台个人笔记)

/*有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少? 用递归的方法实现 */ #include using nam...

java-有一对兔子,从出生后第3个月起每个月都生一对兔子...

import java.util.ArrayList; import java.util.ListIterator; /* * 题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子, ...

JAVA编程之古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子

问题是这样的:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一 对兔子, 假如兔子都不死,问每个月的兔子总数为多少?    这个问题相信大家已经不在陌生了。...
  • rlanffy
  • rlanffy
  • 2014年05月29日 17:24
  • 3219

oracle统计一年中每个月的数据

使用场景:统计支出表中某人某年的每个月的支出情况 1.创建表如下(oracle) --支出表   create table PAY   (     ID ...
  • 99guo
  • 99guo
  • 2014年02月19日 10:59
  • 7785

递归:斐波那契数列(兔子总数)。

反复学习反复学习。 因为自己对递归还是不太熟练,于是做POJ1753的时候就很吃力,就是翻棋子直到棋盘上所有棋子的颜色一样为止,求最少翻多少次,方法是枚举递归。然后就打算先做另一道递归的题(从数组中...

递归算法基础 斐波那契问题几种实现方法 两个经典问题(兔子问题、奶牛问题)

斐波那契数列又因数学家列昂纳多·斐波那契以兔子繁殖为例子而引入,故又称为“兔子数列”。...

可以显示每个月的日历,月份

  • 2011年07月02日 13:41
  • 26KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:统计每个月兔子的总数【斐波那契】
举报原因:
原因补充:

(最多只允许输入30个字)