斐波那契问题——超生的母牛
题目:
假设农场种成熟的母牛每年只会生一头小母牛,并且永远不会死。第一年农场有一头成熟的母牛,从第二年开始,母牛开始生小母牛。每只小母牛3年之后成熟又可以生小母牛。给定整数N,求出N年后牛的数量。
分析:
首先第N-1年的牛都会活到第N年
所有成熟的牛都会生一头小牛,如何统计成熟的牛的数量?
成熟的牛数量 = 第 N-3 年所有的牛 C(N-3)
第N-1年到N年出生的牛数量 = 出生小牛的数量就是到第N年成熟母牛的数量,也就是C(N-3)
所有牛数量:C(N) = C(N-1) + C(N-3) C(1)=1 C(2)=2 C(3)=3
代码实现:
方法一:(暴力递归)
public static int c1(int N) {if (N < 1) {return 0;}if (N == 1 || N == 2 || N == 3) {return N;}return c1(N-1) + c1(N-3);}
方法二:O(N)
public static int c2(int N) {if (N < 1) {return 0;}if (N == 1 || N == 2 || N == 3) {return N;}int res = 3;int pre = 2;int pre2 = 1;int tmp = 0;int tmp2= 0;for (int i = 4; i <= N; i++) {tmp = res;tmp2 = pre;res += pre2;pre = tmp;pre2 = tmp2;}return res;}
方法三:
C(N) = C(N-1) + C(N-3) 是三阶递推数列。
矩阵阶乘方法 matrixPower() 参考博客:斐波那契数列问题
public static int c3(int N) {if (N < 1) {return 0;}if (N == 1 || N == 2 || N == 3) {return N;}int[][] base = {{1,1,0},{0,0,1},{1,0,0}};int[][] res = matrixPower(base, N-3);return 3*res[0][0] + 2*res[1][0] + res[2][0];}
斐波那契问题——超生的母牛相关推荐
- 解决斐波那契数列 (3)超生的母牛——斐波那契数列的变形
时间限制 1000 ms 内存限制 32768 KB 代码长度限制 100 KB 判断程序 Standard (来自 小小) 题目描述 有一头母牛,它每年年初生一头小母牛.每头小母牛从第四个年头开始, ...
- 动态规划——斐波那契数列(70. 爬楼梯、198. 打家劫舍、213. 打家劫舍II、信件错排、母牛生产)
递归和动态规划都是将原问题拆分成多个子问题然后求解,但是动态规划存储了子问题的解,不需要重复计算. 动态规划(Dynamic Programming,DP)需要转移方程和边界条件. 目录 一.70. ...
- 【递推】HDU -2018 母牛的故事斐波那契兔子数列
函数之递归的应用 母牛的故事 (这个问题还有很多类似的,比如种树,每一年种的树品质在改变,当然区别在于树不能生孩子.. 相应的人类达到法定年龄就可以生孩子,这个和母牛问题一样,只不过时间间隔变化了. ...
- 母牛生小牛 斐波那契数列的变式!
设有一头小母牛,从出生第四年起每年生一头小母牛,按此规律,第N年时有几头母牛? 输入格式 输入一个整数N.(1≤N≤50) 输出格式 第N年时母牛的数量 代码解析: 在做题之前不妨看看一道题: 题目: ...
- 斐波那契问题的递归和动态规划
题目:给定整数N, 返回斐波那契数列的第N项 补充问题1:给定整数N,代表台阶数,一次可以跨2个或者1个台阶,返回有多少中走法 补充问题2:假设农场中成熟的母?每年只会省1头小母牛,并且永远不会死.第 ...
- 斐波那契数列数列相关简化2
看这篇文章前先看一下第一篇文章: 斐波那契数列数列相关简化1_鱼跃鹰飞的博客-CSDN博客 根据第一篇文章总结如下: 如果某个递归,除了初始项之外,具有如下的形式 F(N) = C1 * F(N) + ...
- 动态规划Ⅰ:斐波那契数列
动态规划题目类型 & 做题思路总览:动态规划解题套路 & 题型总结 & 思路讲解 文章目录 一.斐波那契数列 1. 爬楼梯问题 2. 打家劫舍系列 3. 信件错排 4. 母牛生 ...
- 斐波那契数列兔子繁殖问题相关思考
斐波那契数列的一个典型应用就是兔子繁殖问题. 一.最朴素的兔子繁殖问题就是:有一只兔子,从出生后第3个月起每个月都生一只兔子,小兔子长到第三个月后每个月又生一只兔子,假如兔子都不死,问第n个月的兔子总 ...
- 斐波那契数列系列算法最优复杂度-------O(logN)
斐波那契数列系列算法最优复杂度--时间复杂度优化到O(LogN) 对于菲薄那契系列问题的探讨很多,下面就以两个例子来分析: 案例 一: 在迷迷糊糊的大草原上,小红捡到了n根木棍,第i根木棍的长度为i, ...
最新文章
- golang byte转string_golang系列——实战http服务器
- devc++64位不兼容_DNF玩家遭强制脱坑,只因64位更新后无法上游戏,如何解决?...
- qt实现-给SQLITE添加自定义函数
- Linux core dump的详细介绍及使用
- 结构体转char[]
- 下列哪个不是目前python里的内置模块-python中那些小众但有用的内置模块
- CSS学习笔记 display属性
- 用fft对信号进行频谱分析实验报告_示波器上的频域分析利器,Spectrum View测试分析...
- java 生成缩略图类_JAVA生成【缩略图】方法
- UTF8有BOM和无BOM
- Ext4文件系统修复
- Mapnik使用postgres中的栅格数据
- jquery学习之路jquery之一:jquery选择元素的方法,太神了 2012.8.2
- 如何查看IIS的80端口被占用?
- Sublime Text 2删除行尾空格
- 微信小程序学习总结(一)——程序文件内容
- mac M1 下安装docker 及相关镜像
- Radius认证协议(六)报文属性
- 常用的几种视频格式(最详细的解释)
- 2-1个人小程序注册