蝴蝶繁殖(动态规划)

1740: 蝴蝶繁殖

题目描述

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

输入

x,y,z的数值
 

输出

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

样例输入

1 2 8

样例输出

37

提示

0=<x<=20,1<=y<=20,x=<z<=50   样例:
1 2 3 4 5 6 7 8
1 1 1*2+1=3 1*2+3=5 1*2+5=7 3*2+7=13 5*2+13=23 7*2+23=37
    前两天卵都没孵化就只是1(初始),后面每一天都是前一天的成虫数量+i-2-x天的数量*y(第三天也是,第零天也是1) 那么dp方程就是:dp[i]=dp[i-1]+dp[i-x-2]; 那么直接上程序:
 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 int main(){
 4     long long dp[55];
 5     int x,y,z;
 6     cin>>x>>y>>z;
 7     for(int i = 0;i<x+2;i++){
 8         dp[i]=1;//前x+1天(0 1 2)初始值 
 9     }
10     for(int i = x+2;i<=z+2;i++){
11         dp[i]=dp[i-1]+dp[i-2-x]*y;//方程 
12     } 
13     cout<<dp[z];
14     return 0;
15 }

ok~~~

上一篇:第五篇、微信小程序-swiper组件


下一篇:微信硬件开发步骤