import java.util.Scanner;
public class Main {
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
while(true) {
int n = sc.nextInt();
if(n==0){
break;
}
if (n == 1 || n == 2 || n == 3) {
System.out.println(n);
continue;
}
int a = 1, b = 2, c = 3,d=0;
for (int i = 4; i <= n; i++) {
d = c+ a;
a = b;
b = c;
c = d;
}
System.out.println(c);
}
}
}
主要方法:迭代
主要思路:
若 n=0:直接退出循环,程序结束;
若 n=1/2/3:输出 1/2/3,然后读取下一个 n;
若 n>3:执行以下迭代步骤:
① 初始化变量:a=1, b=2, c=3;
② 循环(从 4 到 n):计算 d = c + a;
更新变量:a=b,b=c,c=d;
③ 循环结束后,c 就是第 n 年的母牛数,输出 c;
④ 读取下一个 n,如此重复步骤 。
核心思路:第 n 年的母牛总数 = 第 n-1 年的所有母牛(都存活) + 第 n-3 年的母牛数量(这些母牛在第 n 年都满 4 岁,每头会生 1 头小牛)。
核心公式:f(n) = f(n-1) + f(n-3) --> d=c+a
ps:
用while循环可以实现输入多组数据;
d=0意为保存当年年份的结果;
循环从4开始因为这些母牛从第 4年开始陆续满 4 岁,且每只每年会生 1 头小牛
0.0分
0 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复