当前位置:首页 > 题解目录 > 正文内容

【题解】母牛的故事

亿万年的星光4年前 (2021-07-12)题解目录20437

【题目描述】

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

【输入描述】

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

【输出描述】

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

【样例输入】

2
4
5
0

【样例输出】

2
4
6

【题目分析】

我们先列出一个表格,把每一年对应的母牛数量写出来。问题的关键分清每年牛的数量。确定数量后再推导规律。


表格参考下面:(大牛表示每年都可以生牛的牛,牛1表示大牛第二年的生的牛,牛2表示大牛第三年生的牛,牛3表示第4年生的牛)

年数
大牛牛1牛2牛3
总数
第一年10001

解释:第一年,只有1头母牛(根据测试样例中,第二年有2头,说明题目中说的年初是第二年年初,而不是第一年年初)

当第二年时:

年数大牛牛1牛2牛3总数
第二年11002

解释:大牛在第二年年初生了一头小牛。这时牛1还不到第四年,所以一共2头牛

当第三年时:

年数大牛牛1牛2牛3总数
第三年11103

解释:牛1才第二年,不能生小牛。大牛继续生小牛。所以一共3头牛。

当第四年时:

年数大牛牛1牛2牛3总数
第四年11114

解释:牛1是第三年,不能生小牛。牛2是第二年,不能生小牛。牛3是第一年,不能生小牛。所以一共4头牛。

当第五年时:

年数大牛牛1牛2牛3总数
第五年21114

也可以通过下面的图进行分析:(实线表示生育关系,虚线表示成长关系)

可以用下面这个表格来表示:

第 n年:12345678
f[n] 头牛:1
23469
1319

规律就是该年母牛的数量就是一年前的数量再加上三年前的数量,

用公式表示就是 f[n] = f[n-1] + f[n-3]

参考代码:

#include<iostream>
using namespace std;
int f[55]; 
int main()
{
    int n, i;
  	f[0]=0,f[1]=1,f[2]=2,f[3]=3;
    for (i = 4; i < 55; i++)
        f[i] = f[i - 1] + f[i - 3];
    while (1)  
    {	cin>>n;
		if(n==0){
			return 0
		} 
        cout << f[n] << endl;
    }
    return 0;
}


扫描二维码推送至手机访问。

版权声明:本文由青少年编程知识记录发布,如需转载请注明出处。

分享给朋友:

相关文章

【题解】阶乘问题

2.阶乘问题(fac.cpp)【题目描述】给定一个正整数n,求出一个最小的整数m并使得m!的末尾连续的0的个数小于n。m!=1*2*3*4*...*m【输入描述】第一行n。【输出描述】一个整数m。【样...

【题解】放苹果(1)

【题目描述】把M个同样的苹果放在N个同样的盘子里,允许有的盘子空着不放,问共有多少种不同的分法?(用K表示)5,1,1和1,5,1 是同一种分法。【输入】第一行是测试数据的数目t(0≤t≤20)。以下...

剪刀石头布

【题目描述】石头剪子布,是一种猜拳游戏。起源于中国,然后传到日本、朝鲜等地,随着亚欧贸易的不断发展它传到了欧洲,到了近现代逐渐风靡世界。简单明了的规则,使得石头剪子布没有任何规则漏洞可钻,单次玩法比拼...

【题解】进制转换(2019青岛市程序设计竞赛)

【问题描述】输入十进制正整数n和k,输出n的k进制数。我们熟悉的十进制所需的10个基数(基本的数字符号)是0,1,2,3,4,5,6,7,8,9。当10<k<=16时,k进制的k个基数从小...

【题解—深搜】马走日

【题解—深搜】马走日

【题目描述】马在中国象棋以日字形规则移动。请编写一段程序,给定n×m大小的棋盘,以及马的初始位置(x,y),要求不能重复经过棋盘上的同一个点,计算马可以有多少途径遍历棋盘上的所有点。【输入】第一行为整...

合影效果

【题目描述】小云和朋友们去爬香山,为美丽的景色所陶醉,想合影留念。如果他们站成一排,男生全部在左(从拍照者的角度),并按照从矮到高的顺序从左到右排,女生全部在右,并按照从高到矮的顺序从左到右排,请问他...