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

原创 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/

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

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

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

每个月的兔子总数为多少?

古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少? 程序分析:兔子的规律为数列1,1,2,3,5,8,13...
  • I_peter
  • I_peter
  • 2017年12月28日 11:50
  • 52

华为OJ——统计每个月兔子的总数

统计每个月兔子的总数 题目描述 有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?     /**      * 统计...
  • u010480899
  • u010480899
  • 2016年07月03日 20:14
  • 274

统计每个月兔子的总数

import java.util.Scanner; public class GetRabbitNum { public static void main(String[] args) { ...
  • liaction
  • liaction
  • 2015年08月21日 22:29
  • 647

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

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

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

题目:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?...
  • l294265421
  • l294265421
  • 2015年03月05日 11:15
  • 3745

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

/***************************************************************                    *****auther: liu...
  • liuyongshui4979
  • liuyongshui4979
  • 2013年04月05日 22:54
  • 857

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

题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?    //这是一个菲波拉契数列问题 publi...
  • niithust
  • niithust
  • 2012年05月30日 18:28
  • 3624

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

程序分析: 兔子的规律为数列1,1,2,3,5,8,13,21…. ,用到的是递归,下面我们来看看代码。public class Prog1{ public static void main(...
  • iamdingruihaha
  • iamdingruihaha
  • 2017年06月23日 14:25
  • 209

古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少? 兔子的规律为数列1,1,2,3,5,8,13,21...

古典问题
  • H_lukong
  • H_lukong
  • 2015年11月01日 22:03
  • 863
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:统计每个月兔子的总数【斐波那契】
举报原因:
原因补充:

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