首页 > 其他分享 >兔子产子问题

兔子产子问题

时间:2023-04-18 11:26:24浏览次数:29  
标签:fb2 fb1 迭代 产子 int long 问题 兔子

一、问题描述:

二、设计思路:

 遇到这种兔子不死的爆发户问题,先不要慌,列个表先

 通过这个表可以清楚知道兔子总数随月份变化的规律依次为1,1,2,3,5,8,13......很明显是斐波那契(Fibonacci)数列,对了忘了介绍,小兔子代表出生了1个月的兔子,中兔子代表出生2个月的兔子,老兔子代表出生3个月以上的兔子,此题的切入点转化为从斐波那契入手,用迭代的思想反映出来。

 跌代的思想主要在于初值和迭代公式,现在思路已经很清晰了。

三、程序流程图:

 

四、代码实现:

#include<stdio.h>
int main()
{
    long fb1=1;//表示前一个月的兔子数量
    long fb2=1;//表示前两个月的兔子数量
    long fb;//表示当前月份的兔子数量
    printf("%12ld%12ld",fb1,fb2);//输出第一月和第二月的兔子数量
    for(int i=3;i<=30;i++)
    {
        fb=fb1+fb2;//当前月份的兔子数量=前面一个月+前面两个月
        printf("%12ld",fb);
        if(i%4==0)//这里起到一个格式作用
        {
        printf("\n");//每行输出四个
        }
        fb2=fb1;//把前一个月的兔子数量赋给前两个月,实现月份的后移
        fb1=fb;//把当月的兔子数量赋给前一个月,实现月份的后移
        
    }
    return 0;
}

 我们还可以稍微改进一下,只用两个变量来表示

#include<stdio.h>
int main()
{
    long fb1=1;//表示前一个月的兔子数量
    long fb2=1;//表示前两个月的兔子数量
    for(int i=1;i<=15;i++)//循改进减少一半
    {
        printf("%12ld%12ld",fb1,fb2);
        if(i%2==0)//这里起到一个格式作用
        {
            printf("\n");//每行输出2个
        }
        fb1=fb1+fb2;//直接表示最新一个月的兔子数量
        fb2=fb1+fb2;//直接表示比fb1还新一个月的兔子数量
        
    }
    return 0;
}

 时间缩短了一点有木有?我们平时就应该精炼算法,以后拿到工程可以尽可能的提高效率,跌代的思想比较难掌握,关键在于初值和迭代公式,怎样才能套娃套起来,然后思考什么时候我停止套娃,也就是迭代的终止条件,稍有不慎就会出现死循环,继续坚持学习,人类的赞歌就是勇气的赞歌。

 

标签:fb2,fb1,迭代,产子,int,long,问题,兔子
From: https://www.cnblogs.com/bzsc/p/17328896.html

相关文章

  • 加工生产问题
    #include<iostream>#include<algorithm>usingnamespacestd;structm{inta;intb;};structmN[1001],N1[1001],N2[1001];intn;boolcmp1(mx,my){returnx.a<y.a;}boolcmp2(mx,my){returnx.b>y.b;}intmain(){......
  • 【C#】Random生成随机数重复的问题
    ///<summary>///根据中位数返回区间随机数///</summary>///<paramname="mid"></param>///<returns></returns>privatestaticintGetRandom(intmid){//1.//Randomran=new......
  • 【HarmonyOS】解决Line组件在预览器跟模拟器显示不一致的问题
     【关键字】ArkUI、HarmonyOS、Line组件、预览器、模拟器 【问题描述】最近项目中使用到了Line组件,在使用时遇到了一个问题,简单写了一个Demo复现一下,代码如下:​代码很简单,此时打开预览器看一下效果如下:​然后又打开了远程模拟器进行调试,结果得到的效果如下:​问题很明......
  • ASP.NET Core设置URLs的几种方法,完美解决.NET 6项目局域网IP地址远程无法访问的问题
    近期在dotnet项目中遇到这样的问题:.net6运行以后无法通过局域网IP地址远程访问。后查阅官方文档。整理出解决问题的五种方式方法,通过新建一个新的WebApi项目演示如下:说明操作系统:Ubuntu22.04.2运行时:.NET6开发工具:VisualStudio2202新建webapi#只需要以下名利即可创......
  • 【LeetCode动态规划#07】01背包问题一维写法(状态压缩)实战,其二(目标和、零一和)
    目标和(放满背包的方法有几种)力扣题目链接(opensnewwindow)难度:中等给定一个非负整数数组,a1,a2,...,an,和一个目标数,S。现在你有两个符号+和-。对于数组中的任意一个整数,你都可以从+或-中选择一个符号添加在前面。返回可以使最终数组和为目标数S的所有添加符号的......
  • P1996 约瑟夫问题-循环链表方法
    题目描述n 个人围成一圈,从第一个人开始报数,数到 m 的人出列,再由下一个人重新从 1 开始报数,数到 m 的人再出圈,依次类推,直到所有的人都出圈,请输出依次出圈人的编号。注意:本题和《深入浅出-基础篇》上例题的表述稍有不同。书上表述是给出淘汰 n−1 名小朋友,而该题是全部......
  • 【FPGA】vivado使用时的问题汇总
    今天在使用vivado的时候,出现了之前的错误,但是我忘记了解决方案,只能再去网上找方法。所以我建了个这个问题汇总博客,以后再碰到问题可以先来这里翻一翻。1、MIGIP核在重新打开工程的时候会丢失一些文件,导致无法仿真,需要重新生成一遍IP核才能够正常使用。同样的,在OpenIPExample......
  • 你不卖代码,您出售问题的解决方案。
    不要让客户自我诊断当您在一家软件公司工作时,很容易想到“代码就是我们出售的东西”。这不是真的。对于购买你产品的人来说,他们不关心它用了多少行代码。您如何构建软件并不重要。唯一重要的是——它能解决真正的问题吗?工程与商业在我工作过的许多组织中,存在分歧。工程团队......
  • 2023-04-17 算法面试中常见的树和递归问题
    二叉树和递归0LeetCode297二叉树的序列化和反序列化序列化是将一个数据结构或者对象转换为连续的比特位的操作,进而可以将转换后的数据存储在一个文件或者内存中,同时也可以通过网络传输到另一个计算机环境,采取相反方式重构得到原数据。请设计一个算法来实现二叉树的序列化与......
  • 【蝴蝶算法】基于随机惯性权重策略+最优邻域扰动策略+动态转换概率策略的蝴蝶算法求解
    ✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信。......