牛生牛/兔子生兔子问题

阅读: 评论:0

牛生牛/兔子生兔子问题

牛生牛/兔子生兔子问题

牛生牛/兔子生兔子问题

有一头母牛,它每年年初生一头小母牛。每头小母牛从第四个年头开始,每年年初也生一头小母牛。编程实现在第n年的时候,共有多少头母牛?

本文章,详细阐述了本人第一次遇到这种问题的思路,和刷了相关题之后的思路。
首先阐述了第一次遇到这种问题的思路。
详细如下:

首先分析问题:面对这样的繁殖问题,可以考虑递推;个人第一次面对这种问题时的思路过程:

1.明确我的目标我要求第N年,那么如果我要求第100年怎么办?
我发现,我很难算出第100年的情况。
2. 那我退而求其次,在纸上列出表格,看能不能找出什么规律。

第零年第一年第二年第三年第四年第五年第六年
12346913

找规律,假如能找出一个数学公式的话,问题就容易解决了。
分析表格:前四年都是开始的母牛生下的孩子。从第四年开始,第一年出生的牛也开始生下孩子。写出分解运算,联想之前接触过的一些数组。第四年的6会不会是第三年加上第二年呢?4+3为7,显然不合理。再分析,6=4+2。
这个时候,结合实际问题。牛可以分解为:已经存在的牛+这一年生育的牛。
那么已经存在的牛是第三年有的牛。问题解决了一半。
3. 这个时候需要分析,这一年生育的牛。根据一般规律。6=4+2;9=6+3;13=9+4;再结合题目中,牛在第三年成熟,不难发现,这一年生育的牛是三年前成熟的牛。
4. 我们得到了数列的单项公式。an=a(n-1)+a(n-3)
5. 接下来进行代码实现。大致如下:

/*有一头母牛,它每年年初生一头小母牛。每头小母牛从第四个年头开始,
每年年初也生一头小母牛。编程实现在第n年的时候,共有多少头母牛?分析:类似于兔子生兔子的问题
牛的总数等于,前一年的牛+出生的牛(n-3);
递归过程中,子问题,n-1年的牛也为:前一年的牛+出生的牛(n-3)n-3年的牛也为:前一年的牛+出生的牛(n-3)
递归结束条件:n=4时,第一次有出生的牛成熟。因该为n等于1,2,3时的值
*/
#include<iostream>
using namespace std;
int F(int n) {if (n == 0) return 1; //第0年,初始牛为1else if (n == 1)  return 2; //第二年,母牛生了一个,else if (n == 2) return 3;else if (n == 3) return 4;/*或if(n<4) return n+1;*//*if(n<0) return 1;if(n==0) return 1;*/else if (n >= 4) return F(n - 1) + F(n - 3); //牛的数目是,前一年的牛+生的牛。。。
}												 //生的牛的总数是,三年前的牛的数目。  因为牛第四年才能生育		
int main() {int F(int n);int N;cout << "几年,小兄弟" << endl;cin >> N;cout << F(N);
}

总结一下这种题目的思路:

  1. 这种题目做多以后,再做,不由自主的会想起递归。
  2. 想到递归,就要分解出来第N年的数目(这里不妨假设N超过递归的结束条件),可以想一个具体的数字。
  3. 写F(N)=F();的公式。这一类问题,N年的数目,分两类,一个是N-1年的牛的数目,这个数目是已经存在的牛。还有F(N-3)的牛,这个数目是生育出来的牛(牛一年只能生育一只小牛,所以数目与F(N-3)相同。 PS:大家可以试一下如果一头牛可以生两只,或者更多的情况。或者每一年会死某个数目的牛)。
  4. 由此可得递归公式F(N)=F(N-1)+F(N-3)。
    接下来就是代码的实现。

下面放上代码的图片。

之后会详细记录学习C++、数据结构、算法设计与分析过程中刷到的题目和感悟。仅供自己学习使用,如果恰好这篇文章能帮到你,不甚荣幸,需要代码的自行拿走,写错的请多多包容,共同学习,共同进步。

本文发布于:2024-02-05 03:34:28,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/170723102562703.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:兔子   牛生牛
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23