解题思路:首先确定题目中的变量,可得出一岁,两岁,三岁,和成年的母牛数量,以这四个变量为核心牛的总数total,所以写一个计算的递归函数用于计算,控制递归的终点显然需要判断当前年数y是否小于目标年数n,从而得出答案。

注意事项:1、每轮生育中,后一岁是前一岁的总和。2、由于第一年不生崽,则干脆前4年的区分出来。

参考代码:

#include <stdio.h>
int n,total,y;
void compute(int f,int s,int t,int adult){
	y++;
	if (t != 0) adult = adult + t;
	if (s != 0) t = s;
	if (f != 0) s = f;
	f = adult;
	total = f+s+t+adult;
	if(y < n) compute(f,s,t,adult);
	return;
}
int main(void){
    int i = 0,j,arr[55];
    while(scanf("%d", &arr[i])){
        if (arr[i] == 0) break;
        i++;
    }
    for (j = 0; j < i; j++){
    	if (arr[j] < 5) printf("%d\n", arr[j]);
    	else{
    		n = arr[j] - 4;
    		compute(1,1,1,1);
	    	printf("%d\n",total);
	    	total = 0;
	    	y = 0;
    	}
    }
    return 0;
}


点赞(1)
 

0.0分

0 人评分

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

评论列表 共有 0 条评论

暂无评论