演算法題目--知識盲區記錄一下
阿新 • • 發佈:2020-11-14
兔子生兔子
問題描述:一對兔子每個月生一對兔子,新兔子在第四個月開始生兔子,以此類推,在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; } }
注:如果間隔月份更大,可以使用陣列來儲存每個月的兔子數量而不是用變數直接定義