黑马程序员技术交流社区
标题:
不死神兔
[打印本页]
作者:
nighhr
时间:
2017-10-18 22:36
标题:
不死神兔
本帖最后由 nighhr 于 2017-10-18 22:37 编辑
public void undeadRabit() {//
有一对兔子,从出生起后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子, 假如兔子都不死,问第二十个月的兔子对数为多少?
Scanner mon = new Scanner(System.in);
Scanner beg = new Scanner(System.in);
System.out.println("请输入兔子共生了多少个月");
int s = mon.nextInt();
System.out.println("请输入每只兔子从第几个月开始生");
int b = beg.nextInt();
int[] sum = new int
; // 当年兔子可生兔子数量
int[] num = new int
; // 每年兔子新生数量
num[0] = 1; //为num数组提供初始算术条件
num[1] = 1;
for (int month = 0; month < s; month++) {
// 每年兔子新生数量等于除了前两年以外的所有兔子和
for (int a = 0; a <= month - 2; a++) {
num[month] += num[a];
}
// 从3月到17月 当年共可生兔子数量是 可生月份*当年新生数量
if (month > (b-2) && month < (s+1-b)) {
sum[month] = (s-b - month) * (num[month]);
}
}
//遍历sum数组 求和 得出第3-17年的兔子共生多少兔子
int sun = 0;
for (int d = 0; d < sum.length; d++) {
sun += sum[d];
}
//加上第一年1只兔子和第二年1只兔子所生的18只和17只兔子
sun = sun + s*2-b*2+1;
System.out.println("在"+s+"个月中,一共生了"+sun+"只兔子(每只兔子从第"+b+"个月开始生)");
}
作者:
Oliverwqcwrw
时间:
2017-10-18 22:44
这是一个算法吧
作者:
nighhr
时间:
2017-10-18 22:53
Oliverwqcwrw 发表于 2017-10-18 22:44
这是一个算法吧
嗯 做完具体题目改写的 甚至有些注释都忘了改,,
作者:
fashionkillyou
时间:
2017-10-19 01:18
可以用递归算法
作者:
yinman
时间:
2017-10-19 13:42
66666666666666666
作者:
X_iaY_u
时间:
2017-10-19 16:12
小学奥数题用java说出来
作者:
nighhr
时间:
2017-10-23 11:12
fashionkillyou 发表于 2017-10-19 01:18
可以用递归算法
现在普遍都用那种算法 我想换一种。。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2