算法题目--知识盲区记录一下
Posted mousego
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了算法题目--知识盲区记录一下相关的知识,希望对你有一定的参考价值。
兔子生兔子
问题描述:一对兔子每个月生一对兔子,新兔子在第四个月开始生兔子,以此类推,在24个月之后有多少只兔子
问题分析:第一个月(1对老+1对新),第二个月(1对老+2对新),第三个月(1对老+3对新),第四个月(1对老+(1对老+4对新)),第5个月(1对老+(1对老+(1对老6对新))。三个月之后每个月会有一对老兔子,而每个月会新增老兔子对数的新兔子
代码:
public class C {
public static void main(String[] args) {
for (int i = 1; i <= 24; i++) {
System.out.println(rabbitQuantity(i));
}
}
static int rabbitQuantity(int month) {
// 将一个月大、二个月大、三个月大和成年兔子分别记录
int oneMonthRabbit = 0;
int twoMonthRabbit = 0;
int threeMonthRabbit = 0;
int grownUpRabbit = 2;
int totalRabbit = 0;
// 每个月兔子长大,一个月大的兔子新增成年兔子的数量,全部兔子总数就是所有年龄兔子的和
for (int startMonth = 0; startMonth < month; startMonth++) {
if (threeMonthRabbit > 0) {
grownUpRabbit += threeMonthRabbit;
threeMonthRabbit = 0;
}
if (twoMonthRabbit > 0) {
threeMonthRabbit += twoMonthRabbit;
twoMonthRabbit = 0;
}
if (oneMonthRabbit > 0) {
twoMonthRabbit += oneMonthRabbit;
oneMonthRabbit = 0;
}
oneMonthRabbit += grownUpRabbit;
}
// System.out.println(oneMonthRabbit + " " + twoMonthRabbit + " " + threeMonthRabbit + " " + grownUpRabbit);
totalRabbit = oneMonthRabbit + twoMonthRabbit + threeMonthRabbit + grownUpRabbit;
return totalRabbit;
}
}
注:如果间隔月份更大,可以使用数组来保存每个月的兔子数量而不是用变量直接定义
以上是关于算法题目--知识盲区记录一下的主要内容,如果未能解决你的问题,请参考以下文章