美文网首页C语言
郑州轻工业大学oj题解(c语言)1364: 母牛的故事 (兔子数

郑州轻工业大学oj题解(c语言)1364: 母牛的故事 (兔子数

作者: 缘点点 | 来源:发表于2020-01-10 21:44 被阅读0次

    昨晚小丧了一下没想到炸出一群以为我快死了的跑来安慰我的。。。其实还好啦,偶尔就会有点小伤感,睡一觉起来基本就没事了的哈哈哈哈哈
    今天在社团看了一下午的纸质书,也算过的还算充实吧,现在这个时期能找到机会坐下来好好看纸质书的机会是真的不多了。(2018年生日买的龙族全套,现在还没看完)、
    今天的题目是一道和1055极为类似的题目,没印象的朋友也可以看看之前写的题解:https://www.jianshu.com/p/ce671c18cc83

    今天这道类似的题目,我们换个思路,用数组来解决问题,同样的,还不熟悉数组的同学也可以看看之前1114的题解,有完整的数组入门~


    1364: 母牛的故事

    • 题目描述
      有一头母牛,它每年年初生一头小母牛。每头小母牛从第四个年头开始,每年年初也生一头小母牛。请编程实现在第n年的时候,共有多少头母牛?
    • 输入
      输入数据由多个测试实例组成,每个测试实例占一行,包括一个整数n(0<n<55),n的含义如题目中描述。
      n=0表示输入数据的结束,不做处理。
    • 输出
      对于每个测试实例,输出在第n年的时候母牛的数量。
      每个输出占一行。
    • 参考代码:
    #include<bits/stdc++.h>
    using namespace std;
    int main()
    {
        int a[110];
        a[1]=1;
        a[2]=2;
        a[3]=3;
        int n,i;
        while(scanf("%d",&n),n!=0){
            for(i=4;i<=55;i++){
                a[i]=a[i-3]+a[i-1];
            }
            printf("%d\n",a[n]);
        }
        return 0;
    }
    
    • 代码解析:
    1. 之前1055的时候有好好介绍过这种递推题的理解思路,这里大概讲一遍递推通常用于数列的计算中。f(0)-->f(1)-->f(2)-->f(3),
    2. 这里的母牛前三年的只数都是固定的,所以我们可以先赋值好数组的前三项,这里为了看起来顺眼不会模糊,我们就不赋值a[0]了。
    3. 接下来开始写循环,根据题目要求,以n=0表示输入结束,所以我们就按1080的写法写循环让其=0我们便退出循环即可,题目说每头牛第4年就开始会生新的小牛,也就是第4年的时候,第1年的牛的只数,也就是第4-3年的牛的只数×2,而相对的,第5年的时候,第2年的牛的只数也会×2,所以我们这里得出一下公式:f(x)=f(x-3)+f(x-1),这里f(x)表示这一年的总数,f(x-3)表示相对这一年前三年的牛数,f(x-1)表示前一年的牛数,把他写进代码就成了,a[i]=a[i-3]+a[i-1]。
    4. 最后注意一下每次输出要换行,和计算数量时的循环开始与结束条件即可解决题目。

    相关文章

      网友评论

        本文标题:郑州轻工业大学oj题解(c语言)1364: 母牛的故事 (兔子数

        本文链接:https://www.haomeiwen.com/subject/tzbmactx.html