1312:【例3.4】昆虫繁殖
时间限制: 1000 ms 内存限制: 65536 KB
提交数: 26115 通过数: 12947
【题目描述】
科学家在热带森林中发现了一种特殊的昆虫,这种昆虫的繁殖能力很强。每对成虫过x个月产y对卵,每对卵要过两个月长成成虫。假设每个成虫不死,第一个月只有一对成虫,且卵长成成虫后的第一个月不产卵(过x个月产卵),问过z个月以后,共有成虫多少对?0≤x≤20,1≤y≤20,X≤z≤50。
【输入】
x,y,z的数值。
【输出】
过z个月以后,共有成虫对数。
【输入样例】
1 2 8
【输出样例】
37
#include<iostream>
using namespace std;
long long a[100];//定义全局变量,默认初始值为0;
int main(){
long long x,y,z;
cin>>x>>y>>z;
for(int i=0;i<2+x;++i){//赋边界值;
a[i]=1;
}
for(int i=2+x;i<=z;++i){//递推循环;
a[i]=a[i-1]+a[i-2-x]*y;
}
cout<<a[z];
return 0;
}
解题思路:
假设x=1,y=2,z=8
(1)第0月有1对成虫;第1个月有1对成虫,产2对卵;第2个月有1对成虫,产2对卵;第三个月有3对成虫,产2对卵......
(2)第z个月的成虫数有两个来源:第一个来源是上个月的成虫数量a[z-1],第二个来源是卵新长成的成虫a[z-2-x]*y,所以,a[z]=a[z-1]+a[z-2-x]*y;
(3)建立数学模型以后,编写程序。设置边界值,进行递推循环。
![]()

浙公网安备 33010602011771号