兔群繁殖之谜
问题描述
生物学家小 R 正在研究一种特殊的兔子品种的繁殖模式。这种兔子的繁殖遵循以下规律:
- 每对成年兔子每个月会生育一对新的小兔子(一雌一雄)。
- 新生的小兔子需要一个月成长,到第二个月才能开始繁殖。
- 兔子永远不会死亡。
小 R 从一对新生的小兔子开始观察。他想知道在第 A
个月末,总共会有多少对兔子。
请你帮助小 R 编写一个程序,计算在给定的月份 A
时,兔子群体的总对数。
注意:
- 初始时有 1 对新生小兔子。
- 第 1 个月末有 1 对兔子:原来那对变成了成年兔子,并开始繁殖。
- 第 2 个月末有 2 对兔子:原来那 1 对成年兔子,繁殖了 1 对新生的小兔子。
- 从第 3 个月开始,兔子群体会按照上述规律增长。
输入
一个整数 A
(1 ≤ A ≤ 50),表示月份数。
返回
一个长整数,表示第 A
个月末兔子的总对数。
测试样例
样例1:
输入:
A = 1
返回:1
样例2:
输入:
A = 5
返回:8
样例3:
输入:
A = 15
返回:987
代码解析:一道很简单的dp题,注意到每一天繁殖的数量是前两天的数量之和即可,注意初始化dp[1]和dp[2]
public class Main {
public static long solution(int A) {
if(A==1 ||A==2){
return A;
}
long dp[]=new long[A+1];
dp[1]=1;
dp[2]=2;
for(int i=3;i<A+1;i++){
dp[i]=dp[i-2]+dp[i-1];
}
return dp[A];
}
public static void main(String[] args) {
// Add your test cases here
System.out.println(solution(1) == 1L);
System.out.println(solution(5) == 8L);
System.out.println(solution(15) == 987L);
}
}
标签:字节,青训营,样例,兔子,long,繁殖,小兔子,兔群,dp
From: https://blog.csdn.net/a1564620982/article/details/143651066