题目:如果1对兔子每月能生1对小兔子,而每对小兔在它出生后的第3个月就可以生1对小兔子,如果从1对初生的小兔子开始,1年后能繁殖多少兔子?
思路:其实这个问题我们可以将兔子划分为"1月大的兔子","2月大的兔子","3月大的兔子"。 ① 初始时: 一对1月大小兔子,总数为1对。 ② 第一个月: 1月大的小兔子变成2月大的兔子,总数还是1对。 ③ 第二个月: 2月大的小兔子变成3月大的兔子,繁殖了一对小兔子,总数为2对。 ④ 第三个月: 3月大的兔子tmd有生了一对小兔子,上个月1月大的小兔子变成了2月大的兔子,总数为3对。 ...... ...... F0=1 F1=1 F2=F0+F1 F3=F1+F2 ...... Fn=Fn-2+Fn-1
C++ 实现
#include<iostream>
#include<iomanip>
using namespace std;
int main(){
int month[12];
month[0] = 1;
month[1] = 1;
for(int i=2;i<12;i++){
month[i] = month[i-1] + month[i-2];
}
for(int i=0;i<12;i++){
cout<<"在第"<<i<<"个月兔子有"<<setw(4)<<month[i]<<setw(4)<<"只"<<endl;
}
return 0;
}
运行结果
在第0个月兔子有 1 只
在第1个月兔子有 1 只
在第2个月兔子有 2 只
在第3个月兔子有 3 只
在第4个月兔子有 5 只
在第5个月兔子有 8 只
在第6个月兔子有 13 只
在第7个月兔子有 21 只
在第8个月兔子有 34 只
在第9个月兔子有 55 只
在第10个月兔子有 89 只
在第11个月兔子有 144 只