动态规划——昆虫繁殖

该程序解决了一个关于昆虫繁殖的问题,给定每对成虫开始产卵的月份x、每月产卵对数y和观察的最后月份z,计算在第z个月时的成虫总数。程序使用两个数组a和b,分别存储每个月的成虫数量和繁殖数量,通过循环计算得到结果。
摘要由CSDN通过智能技术生成

【问题描述】

小民发现了一种特殊的昆虫,这种昆虫的繁殖能力很强。每对成虫过x个月后开始产卵,每个月产y对卵;每对卵要过3个月长成成虫(1<=x,y<=20; x<z<=50)。

假设:每个成虫不死,第一个月有一对成虫,问第z个月有多少对成虫。

【输入形式】

1行:三个空格隔开的整数x,y,z

【输出形式】

1行:1个整数,即第n个月的昆虫的数量。

【样例输入1】

1 2 8

【样例输出1】

9

【样例输入2】

3 2 10

【样例输出2】

9

【样例说明】

数据:

12345678910
成虫111135791525
产卵02222610141830

推导:

12345678910
成虫:老+新(产卵[月])11111+2[2]3+2[3]5+2[4]7+2[5]9+6[6]15+10[7]
产卵[月]02[2]2[3]2[4]2[5]3*2[6]5*2[7]7*2[8]

9*2[9]

15*2[10]
#include<iostream>
using namespace std;
long long a[101],b[101]; 
//a数组存储每个月的成虫数量
//b数组存储每个月的繁殖数量 
int main(){
	int x,y,z;
	cin>>x>>y>>z;
	for(int i=1;i<=x;i++)
	{
		a[i]=1;//第i月成虫数量
		b[i]=0;//第i月繁殖数量
	}
	
	for(int i=x+1;i<=z+1;i++)//第z月后,所以是z+1
	{
		b[i]=y*a[i-x];//成虫x月后繁殖的数量 
		a[i]=a[i-1]+b[i-3];//成虫的数量=上个月的成虫+上三个月的虫卵
	}
	cout<<a[z]<<endl;
	return 0;
} 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

成成大作战

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值