解题思路:(怎么想就怎么写,把演草纸上的数学解法,用代码复现)
注意事项:

参考代码:

import java.util.*;

public class Main {
	public static void main(String[] args) {
		
		Scanner sc = new Scanner(System.in);
		List<Integer>list = new ArrayList<>();//集合记录每个数的计算结果
		while(true) {
		        int n = sc.nextInt();
		        if(n==0) {
				break;//输入0回车会结束循环
			}
			int co=1,ca1=0,ca2=0,ca3=0;//第一年(初始值):可繁殖母牛1个,1岁小牛0个,2岁小牛0个,3岁小牛0个
			
				int i = 1;
				while(i<n) {//计算第n年的结果要循环n-1次,因为初始值就是第一年的,第1年循环0次,第n年循环n-1次
					i++;
					int lastca1 = ca1;
					int lastca2 = ca2;
					co += ca3;//今年可繁殖母牛个数=去年可繁殖母牛个数+三岁小牛个数
					ca1 = co; //今年的1岁小牛个数=今年母牛个数
					ca2 = lastca1;//今年2岁小牛个数=去年1岁小牛个数。
					/*由于1岁小牛的个数在上一步会被更新为今年的个数,
					但我要用到去年的值,所以进入循环后就用临时变量将去年的个数存起来,
					*/
					ca3 = lastca2;//今年3岁的小牛个数=去年2岁的小牛个数//同理进入循环就用临时变量存起来以便这一步使用
				}
				list.add(co+ca1+ca2+ca3);//把第n年的计算结果放进集合中
			
		}
		for (int i = 0; i < list.size(); i++) {
			System.out.println(list.get(i));//遍历集合,按题目要求格式打印出结果
		}		
	}
}


点赞(0)
 

0.0分

0 人评分

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

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

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

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

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

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

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

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

评论列表 共有 0 条评论

暂无评论