ACM 1004 | 母牛的故事

news2024/11/20 15:27:06

文章目录

0x00 前言

0x01 题目描述

0x02 问题分析

0x03 代码设计

0x04 完整代码

0x05 运行效果

0x06 总结


0x00 前言

        C 语言网不仅提供 C 语言,还包括 C++ 、 java 、算法与数据结构等课程在内的各种入门教程、视频录像、编程经验、编译器教程及软件下载、题解博客,源码分享等优质资源,提倡边学边练边分享,同时提供对口的IT工作,是国内领先实用的综合性编程学习网站!

        

        

0x01 题目描述

题目内容:

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

输入格式:

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

输出格式:

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

样例输入:

2

4

5

0

样例输出:

2

4

6

        

        

0x02 问题分析

关于递归母牛的故事给出以下示例:

Year123456789101112
cow123469131928416088

        

递推数列公式:

f(n) = f(n-1) + f(n-3) \quad (n \geq 4)

        

        这种题目属于斐波那契数列的变种,斐波那契数列递推式是前一项与前两项相加的和。那么计算斐波那契数列使用函数递归的方法会更清晰易懂。

        

        

0x03 代码设计

int cow(int n)
{
	if(n < 4)
	{
		return n;
	}
	else
	{
		return cow(n - 1) + cow(n - 3);
	}
}

        代码解析:定义一个整数函数 cow 用来计算母牛数量,在函数内部定义一个整数 n 用于接受一个传递参数值,在主函数中可以在函数内部 cow() 使用任意合法数字进行参数传递,如果整数 n 接收到传递后的参数就会执行函数体中的代码块。使用 if 判断接收到的整数 n 是否小于 4 ,如果小于 4 则返回 n 。否则返回 cow(n-1) + cow(n-3) ,这是一个表达式,表示调用 cow 函数两次,并相加。为什么要这么做,因为计算母牛数量每年增长规律是前一年的母牛数加上前三年母牛数的和。

        

int main()
{
	int n, i, j;
	scanf("%d", &n);
	for(i = 1; i <= n; i++)
	{
		j = cow(i);
	}
	printf("%d", j);

	return 0;
}

        代码解析:在主函数中定义一个整数 n ,用于获取用户输入;定义一个整数 i 用于循环计算;定义一个整数 j 用于赋值。第四行代码使用 scanf 函数获取用户输入。第五行代码使用 for 循环构造一个 1-n 的循环,如果循环到 n 之后则结束循环。否则继续循环。循环体中的代码块不断调用 cow 函数,并将 i 值赋给函数内部使用,最后的结果用变量 j 来保存。这里经过循环,函数就会从 cow(1) 开始运行,到最后 cow(n) 运行结束后结束 for 循环。例如 n = 5 ,那么代码到 6 时就不再执行循环。最后使用 printf 函数将保存在变量 j 内部的数值打印出来即可。

        

        

0x04 完整代码

#include<stdio.h>
int cow(int n)
{
	if(n < 4)
	{
		return n;
	}
	else
	{
		return cow(n - 1) + cow(n - 3);
	}
}

int main()
{
	int n, i, j;
	scanf("%d", &n);
	for(i = 1; i <= n; i++)
	{
		j = cow(i);
	}
	printf("%d", j);

	return 0;
}

        

        

0x05 运行效果

5
6
--------------------------------
Process exited after 0.7536 seconds with return value 0
请按任意键继续. . .

        

        

0x06 总结

文章内容为学习记录的笔记,由于作者水平有限,文中若有错误与不足欢迎留言,便于及时更正。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/536846.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

新库上线 | CnOpenData·A股上市公司担保数据

A股上市公司担保数据 一、数据简介 “对外担保”&#xff0c;是指上市公司为他人提供的担保&#xff0c;包括上市公司对控股子公司的担保。“上市公司及其控股子公司的对外担保总额”&#xff0c;是指包括上市公司对控股子公司担保在内的上市公司对外担保总额与上市公司控股子…

初级数据结构——栈和队列

目录 1.栈栈的概念及结构栈的实现栈的结构初始化栈入栈出栈获取栈顶元素获取栈中有效元素个数检测栈是否为空销毁栈Stack.hStack.cTest.c 2.队列队列的概念及结构队列的实现队列的结构初始化队列队尾入队列队头出队列获取队列头部元素获取队列队尾元素获取队列中有效元素个数检…

【FATE联邦学习】model not init, call init_model() function

太长不看版 在local_mode下&#xff0c;不要使用t.CustModel进行实例化&#xff0c;而是直接使用原本的类进行实例化。 如果你设置了trainer.local_mode()&#xff0c;那么trainer里面的model不可以是t.CustModel()的实例。 给几个example&#xff1a; 正确&#xff1a; mod…

2023年美国大学生数学建模竞赛B题重塑马赛马拉的形象解题全过程文档及程序

2023年美国大学生数学建模竞赛 B题 重塑马赛马拉的形象 原题再现&#xff1a; 背景介绍   肯尼亚的野生动物保护区最初主要是为了保护野生动物和其他自然资源而设立的。肯尼亚议会通过了2013年《野生动物保护和管理法》&#xff0c; 以提供更公平的资源共享&#xff0c;以及…

重新定义新增长,从百果园看ESG如何可持续

当下&#xff0c;企业的增长亟待重新定义。 中国已基本告别人口红利时代&#xff0c;不少行业和企业当前陷入增长困境。原来以规模定义的增长很难实现&#xff0c;一些企业在日常运营中找不到方向和方式&#xff0c;因此需要重新定义“增长”。 最终&#xff0c;在环境恶化、…

计算机图形学-GAMES101-7

引言 场景中有很多的三角形&#xff0c;如果实现可见性和遮挡呢&#xff1f;  一个简单的想法是&#xff0c;从远到近画&#xff0c;近处的物体自然会覆盖掉远处的物体&#xff0c;这种画法也叫画家算法。  但是实际绘制中物体的顺序是不容易确定的&#xff0c;比如如下图绘制…

下载和安装appuploader

转载&#xff1a;下载和安装appuploader IOS开发工具官网地址 Appuploader home -- A tool improve ios develop efficiency such as submit ipa to appstore and manage ios certificate 最新版本已经优化了没支付688给apple的账号登录流程&#xff0c;无需再安装其他软件。…

DockerWeave容器跨机通信网络部署

Docker Weave网络部署 Weave在Docker主机之间实现Overlay网络&#xff0c;使用业界标准VXLAN封装&#xff0c;基于UDP传输&#xff0c;也可以加密传输。 Weave Net创建一个连接多个Docker主机的虚拟网络&#xff0c;类似于一个以太网交换机&#xff0c;所有的容器都连接到这上…

数组或结构体赋值时memcpy与直接赋值的效率比较

先上结论&#xff1a; 二者不一定谁快通常情况下&#xff0c;数组维度越大&#xff0c;使用memcpy效率更高数组维度越大&#xff0c;直接赋值耗时主体是循环耗时 Note&#xff1a; “等号赋值”被编译器翻译成一连串的MOV指令&#xff0c;而memcpy则是一个循环。“等号赋值”比…

05mysql---函数

目录 1:日期函数 2:字符函数 3:数值函数 4:流程函数 1:日期函数 select 函数(参数) 函数功能举例curdate()返回当前日期2023-05-17curtime()返回当前时间14:44:33now()返回当前日期和时间2023-05-17 14:44:33year(date)获取指定date的年份month(date)获取指定date的月份day…

【简介】限流

限流 为什么要限流限流算法单机限流计数器算法滑动窗口算法漏桶算法令牌桶算法 分布式限流配额算法 限流策略限流位置 为什么要限流 作为有追求的程序员&#xff0c;我们都希望自己的系统跑的飞快&#xff0c;但是速度再快&#xff0c;系统处理请求耗时也不可能为0&#xff0c…

线程池下载4K壁纸

学习记录 学习记录 一、目标 aHR0cHM6Ly9waWMubmV0Ymlhbi5jb20vDQo 拿到每张图片的href 和 标题&#xff0c;跳转到详情页进行图片下载地址的提取并请求实现图片本地下载 二、代码实现 """ CSDN: 抄代码抄错的小牛马 mailbox&#xff1a;yxhlhm2002163.com…

计算机毕业论文内容参考|基于java的房产营销系统的设计与实现

文章目录 导文摘要前言绪论课题背景课题内容相关技术与方法介绍技术分析技术设计技术实现总结与展望本文总结后续工作展望导文 计算机毕业论文内容参考|基于java的房产营销系统的设计与实现 摘要 当今社会,随着经济的快速发展和人们对生活品质的不断提高,房地产行业正在面临…

Java --- docker安装redis

目录 一、拉取redis容器镜像 二、新建目录 三、拷贝redis.conf文件模板进/app/redis目录 四、修改redis.conf文件 五、启动redis镜像服务 一、拉取redis容器镜像 docker pull redis:7.0.0 二、新建目录 mkdir -p /app/redis 三、拷贝redis.conf文件模板进/app/redis目录 cp …

Java面试(4)面向对象

文章目录 概念1. 面向对象和面向过程的区别2. 面向对象三大特征 类1. 接口和抽象类有什么共同点和区别&#xff1f;2. 深拷贝和浅拷贝区别了解吗&#xff1f;什么是引用拷贝&#xff1f;3. 内部类1. 内部类2. 内部类的优点3. 内部类有哪些应用场景4. 局部内部类和匿名内部类访问…

python 3.8 + tensorflow 2.4.0 + cuda11.0 的问题

版本匹配 &#x1f517;从源代码构建 | TensorFlow 报错&#xff1a;Could not load dynamic library ‘cupti64_110.dll’; dlerror: cupti64_110.dll not found 是因为我电脑中的 cuda 版本以前是 10&#xff0c;现在是 11.4 &#xff0c;所以需要安装对应版本的 cudatoolk…

基于粒子群算法的微网经济优化调度——附Matalb代码

目录 摘要&#xff1a; 代码主要内容&#xff1a; 研究背景&#xff1a; 微电网模型&#xff1a; 粒子群算法&#xff1a; 运行结果&#xff1a; Matlab代码分享&#xff1a; 摘要&#xff1a; 提出了一种经济与环保相协调的微电网优化调度模型&#xff0c;针对光伏电池…

SAP入门到放弃系列之需求管理的基本要素

需求管理目标&#xff1a; 一般而言&#xff0c;生产计划&#xff08;PP&#xff09;的总体目标&#xff0c;特别是需求管理的总体目标是通过减少以下内容来更好地为客户服务&#xff1a; 补货提前期存货成本 需求管理的要素&#xff1a; 需求管理工作的主要要素广义上可分…

2013蓝桥杯真题省赛翻硬币 C语言/C++

[蓝桥杯 2013 省 B] 翻硬币 题目背景 小明正在玩一个“翻硬币”的游戏。 题目描述 桌上放着排成一排的若干硬币。我们用 * 表示正面&#xff0c;用 o 表示反面&#xff08;是小写字母&#xff0c;不是零&#xff09;&#xff0c;比如可能情形是 **oo***oooo&#xff0c;如果…

暴涨700w播放,星穹铁道恰饭频频登上B站爆款热榜!

B站作为现在年轻一代聚集的多元化社区&#xff0c;游戏内容则是社区内受众较为广泛的存在&#xff0c;而星铁作为面向年轻群体的回合制游戏&#xff0c;自然是赢得B站核心用户群体的青睐。 4月26日&#xff0c;暌违已久的手游《崩坏&#xff1a;星穹铁道》&#xff08;后文简称…