本帖最后由 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+"个月开始生)");
}
|
|