第一次发教程,写的不好勿喷(其实没人看)
描述
科学家在热带森林中发现了一种特殊的昆虫,这种昆虫的繁殖能力很强。每对成虫过x个月产y对卵,
每对卵要过两个月长成成虫。假设每个成虫不死,第一个月只有一对成虫,且卵长成成虫后的第一个月不
产卵(过X个月产卵),问过Z个月以后,共有成虫多少对?
输入
x,y,z的数值
输出
过Z个月以后,共有成虫对数
————————————————
(版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/qq_45748133/article/details/120337054)
题目是抄别人的,文章原创!!!
输入:1 2 8
输出:37
首先先理清关系!!!
先定义a[z],b[z]表示每个月成虫和虫卵数量:
#include<bits/stdc++.h>
using namespace std;
int main()
{
int x,y,z;
cin>>x>>y>>z;
int a[z]={1},b[z]={0};
}
tip:a[z]={1}是因为本身存在1对成虫!!!
然后,因为x月才产卵所以:b[i]=a[i-x];
递推用for循环,故用i。
因为是产y对卵,所以b[i]=a[i-x]*y;
然后,卵2个月才成成虫,所以a[i]=b[i-2];
还要加上上个月的成虫数量:a[i]=b[i-2]+a[i-1];
最后输出成虫数量(最新增加)
整体代码如下:
#include<bits/stdc++.h>
using namespace std;
int main()
{
int x,y,z;
cin>>x>>y>>z;
int a[z]={1},b[z]={0};
for(int i=1;i<=z;i++)
{
b[i]=a[i-1]*y;
a[i]=a[i-1]+b[i-2];
}
cout<<a[z]<<endl;
return 0;
}
有问题写评论区里哦!!!
记得点赞!!!