笔试无法a的题,是我脑回路太清奇?大神救救孩子~
先上题:母牛从3-7岁初,每年会生产一头小母牛,10岁后死亡(10岁任然存活),假设初始有一头刚出生的母牛,请问第n年有多少头母牛?(年从第一年开始计数)
注:第三年初会出生 第一头母牛,故第三年有两头母牛
第五年初,第三年出生的母牛会生产,故第五年有五头母牛
岁数是虚数
示例:
输入 |
输出 |
2 |
1 |
3 |
2 |
4 |
3 |
5 |
5 |
12 |
123 |
🤣🤣🤣我感觉我写的还行啊,为什么输入12输出的不是123,其他示例都对的呀,嘤嘤嘤
白痴不配a这道题吗😭😭😭😭😭😭
import java.util.Scanner; public class Main{ public static void main(String[] args) { Scanner scan = new Scanner(System.in); int year = scan.nextInt(); /** * 数组里放入每一头牛的岁数, * 方便在3-7岁生牛,和10岁死亡 * 第一年先赋值一头1岁的牛 */ int [] age = {1}; //按照输入的年份循环,每一年进行计算 for(int i =0;i<year ; i++){ //每年,先把每头牛的岁数+1,大于十岁的牛牛从数组去掉 age = increase(age); //前面岁数+1后,计算牛牛岁数3-7的个数,按照个数增加岁数为1的牛进数组 age = birth(age); } //你知道为什么都比结果大1,所以就减去1。。。。。。 System.out.println(age.length-1); } public static int[] birth(int [] age){ //找出年龄3-7牛牛的个数 int num = 0; for(int i = 0 ; i < age.length ; i++){ if(age[i] >= 3 && age[i] <= 7){ num++; } } //在新数组中加上新生,年龄为1的小牛牛 int[] newAge = new int [age.length+num]; for(int i = 0 ; i < age.length ; i++){ newAge[i] = age[i] + 1; } for(int j=0 ; j < num ; j++){ newAge[age.length+j] = 1; } return newAge; } public static int[] increase(int[] age){ //每头牛的岁数+1,放进新的数组里 int[] newAge = new int [age.length]; for(int i = 0 ; i < age.length ; i++){ newAge[i] = age[i] + 1; } //计算大于10岁的牛的个数 int death = 0; for(int i = 0 ; i < newAge.length ; i++){ if(newAge[i] > 10){ death++; } } //因为小的在后面,所以大于10的在前面,就把前面大于10岁的牛从数组删除 int[] newnew = new int[newAge.length-death]; for(int i = 0 ; i < newnew.length ; i++){ newnew[i] = newAge[death+i]; } return newnew; } }