原题链接:[递归]母牛的故事
解题思路:由题目给出的样例输入和输出结果可知,第二年仅有两只母牛,即原始母牛第二年年初才生第一只小母牛(不知道为什么,但既然题目这么说就强行说它是),鉴于第一年没有生产不利于结构计算,所以可设sum=0(无中生有),因为题目中原始母牛只有一个,所有设开始生产量plus=1(可以理解plus为今年可以生产的母牛的数量),再用一个for循环满足i(现在年数)<n(输入年数)情况下sum+=plus,因为题目定义中新生小母牛要四年后才可以生产,那么可以设置一个数组f[]将今年新生的小母牛数量存进去,四年后再拿出来,可以设置一个指针*p指向数组p,在循环中等到i>4时,才开始plus+=*p;*p++
即解题关键在于今年新增的可以生产的母牛数量=4年前新生小母牛数,今年可以生产的总的母牛数=上一年可以生产的母牛数+今年新增的可以生产的母牛数。
注意事项:实际上第一年母牛并没有生产,所以新增小母牛是从第二年才开始有的,而我设置的数组是从i=1开始的,所以我将*p指向f[2],若设置数组从i=0开始,也可将条件改为p=&f[1],i>3。
参考代码
#include <stdio.h> int main() { int n,i,f[100],*p,plus,sum; while(scanf("%d",&n),n) { p=&f[2]; plus=1;sum=0; for(i=1;i<=n;i++) { if(i>4) { plus=plus+*p; *p++; } sum+=plus; f[i]=plus; } printf("%d\n",sum); } return 0; }
0.0分
2 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复