首页 > 其他分享 >C语言网题目 1004: [递归]母牛的故事

C语言网题目 1004: [递归]母牛的故事

时间:2024-11-11 16:07:36浏览次数:1  
标签:include 递归 int max C语言 year 1004 母牛

题目描述

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

输入格式

输入数据由多个测试实例组成,每个测试实例占一行,包括一个整数n(0<n<55),n的含义如题目中描述。
n=0表示输入数据的结束,不做处理。

输出格式

对于每个测试实例,输出在第n年的时候母牛的数量。
每个输出占一行。

样例输入

2
4
5
0

样例输出

2
4
6
这道题的关键之处是要找出关系 : year[n] = year[n-3] + year[n-1] ; 即三年前的牛在今年能生出新的小牛,再加上原本就有的牛,就是今年的牛的数量.   递归法
#include <iostream>
using namespace std;

int count(int n){
    if(n <= 4) return n;//前4年牛的数量是与年份相等的
    return count(n-3)+count(n-1);
}

int main(){
    int n;cin >> n;
    while(n != 0){
        cout << count(n) << endl;
        cin >> n;
    }
}

当 n 比较大时,递归层数就很深,输入的  n  比较多时,就会产生大量的重复运算,所以可以使用数组存储已计算的数据

递推法

#include <iostream>
using namespace std;
#include <vector>

vector<int> year;

void count(int n,int &max){
    if(max >= n) {
        cout << year[n] << endl;
        return;
    }
    while(max < n){
        year.push_back(year[max-2] + year[max]);
        max++;
    }
    cout << year[n] << endl;
}

int main(){
    int n,max;
    max = 4;//max表示当前最多算到第max年的数据
    year.push_back(-1);//无特别意义,只是为了让year[n]表示第n年的数量
    for(int i = 1;i <= 4;i++)  year.push_back(i);
    cin >> n;
    while(n != 0){
        count(n,max);
        cin >> n;
    }
}

 

 

   

标签:include,递归,int,max,C语言,year,1004,母牛
From: https://www.cnblogs.com/uacs2024/p/18539971

相关文章

  • ag——ack 的升级版,C语言编写,更快更人性化
    转自于:https://github.com/jaywcjlove/linux-command,后不赘述agack的升级版,C语言编写,更快更人性化补充说明摘自https://github.com/ggreer/the_silver_searcher项目的Readme.md它比ack快一个数量级。它忽略了你的.gitignore和.hgignore中的文件模式。如果你的......
  • C语言核心知识(下)
     一、变量1、变量定义2、变量的定义格式3、变量的使用  4、应用5、总结A、变量如何定义?    数据类型变量名;  eg:inta; B、变量如何使用?   @·1、赋值/修改值       a=21;   @·2、获取值        ......
  • C语言的概述及开发工具
    目录一、C语言的概述二、C语言的开发工具总结一、C语言的概述C语言是一种较早的程序设计语言,诞生于1972年的贝尔实验室。1972年,DennisRitchie设计了C语言,它继承了B语言的许多思想,并加入了数据类型的概念及其他特性。尽管C语言是与UNIX操作系统一起被开发出来的,但......
  • 关于我、重生到500年前凭借C语言改变世界科技vlog.17——字符函数&&字符串函数
    文章目录1.字符函数1.1字符分类函数1.1.1islower1.2字符转换函数1.2.1tolower2.字符串函数2.1strlen2.2strcpy和strncpy2.3strcat和strncat2.4strcmp和strncmp2.5strstr2.6strtok2.7strerror希望读者们多多三连支持小编会继续更新你们的鼓励就是我前进的......
  • 2个月搞定计算机二级C语言——真题(11)解析
    1.前言今天双11,正好轮到讲第11篇,直接来个三11。那么本篇我们讲解2个月搞定计算机二级C语言——真题112.程序填空题2.1题目要求2.2提供的代码#include<stdio.h>#include<ctype.h>#pragmawarning(disable:4996)voidfun(int*cd,int*cu,int*cs){......
  • 新人报到附加一个小作业(C语言实现的三子棋)
    1.一个简单的自我介绍我是来自宁夏大学软件工程的一名学生,因为从小喜欢玩游戏,长大对于计算机领域也产生了非常浓厚的兴趣,于是在高考结束后的志愿填报中毫不犹豫的全部选择了计算机专业,希望在接下来的学习中不断进步,在IT行业中发挥自己的光和热。我的学习计划:在大一,学习C/C++......
  • 关于我,穿越异世界,凭c语言搅动风云vlog----利用数组进行大数相关计算
    关于我,穿越异世界,凭c语言搅动风云vlog----利用数组进行大数相关计算一.有关大数你应该要知道的那些事1.大数的概念我们一般将计算机基本数据类型无法存储的数称之为大数,本文涉及的大数均为整数,不包含小数。而且下文代码实现中的数组大小可根据需要修改。2.问题引入在c......
  • 重温c语言之,7天开整,就是随便的写写,第九天
    这次照着网站上的内容,写了一个简单的小游戏,3字棋,其实也可以n字棋附上代码,这里是:game.h1#pragmaonce2#include<stdio.h>3#include<stdlib.h>4#include<time.h>56//游戏代码的声明(函数声明,符号定义)78#defineRow39#defineCol31011//初始化棋......
  • C语言PBC库(持续更新)
    PBC前言我的环境是Ubantu24边写边整理,持续更新。最近做毕设需要用到,就借此机会写一些关于c语言PBC库的教程,一些用法有结合GPT。说是教程不过是把官方文档说的函数用法翻译了一遍,关于双线性配对的知识我不了解,这里就不将了,我看网上大部分说的有就只是当黑盒调用就行了。官方......
  • 用c语言写一个简易版的扫雷游戏
    1、扫雷游戏的功能说明1.1:基本功能     1、使用控制台实现经典的扫雷游戏     2、游戏可以通过菜单实现继续玩或者退出游戏     3、扫雷游戏的棋盘是9*9的格子     4、随机布置10个雷     5、可以排查雷      ......