蝴蝶繁殖

蝴蝶繁殖

题目描述

在一个神秘的森林中某种蝴蝶化茧成蝶繁殖的过程为:
每对蝴蝶过x个月产y对卵,每对卵要过两个月长成蝴蝶。
假设每个蝴蝶都不死的情况下,第一个月只有一对蝴蝶,且卵长成蝴蝶后的第一个月不产卵(过x个月产卵),问过z个月以后,共有多少对蝴蝶?

输入

x,y,z的数值

输出

过z个月以后,共有多少对蝴蝶。

样例输入

content

1 2 8

样例输出

content

37

提示

0=<x<=20,1<=y<=20,x=<z<=50

题目中我们得知x月产y对卵,问z个月后有多少对蝴蝶?

dp方程为:

if(i>=x+2&&i<=z+2)  dp[i]=dp[i-1]+dp[i-x-2]*y;

代码

#include <bits/stdc++.h>
using namespace std;
long long dp[60];
int x,y,z;
int main() {
	cin>>x>>y>>z;
	for(int i=0; i<x+2; i++) {
		dp[i]=1;//前2个月 (0 1 2)初始值
		  
	}
	for(int i=x+2; i<=z+2; i++) {
		dp[i]=dp[i-1]+dp[i-x-2]*y;//dp方程  
	}
	cout<<dp[z];//输出过z个月后蝴蝶的对数。
	return 0;
}

小编蒟蒻一个,有什么问题请大佬不惜赐教Orz

posted @ 2022-02-22 18:13  骆美辰  阅读(99)  评论(0编辑  收藏  举报
lock: { enable: true, background: 'https://img1.baidu.com/it/u=2788089125,168843488&fm=253&app=138&size=w931&n=0&f=JPEG&fmt=auto?sec=1690563600&t=35fa4326e773b3fbf83562ad746b7cd2',//锁屏背景 strings: [ 'Every win named never give up 每一份胜利都叫不放弃',//签名 ], },