蝴蝶繁殖(动态规划)
1740: 蝴蝶繁殖
题目描述
在一个神秘的森林中某种蝴蝶化茧成蝶繁殖的过程为:
每对蝴蝶过x个月产y对卵,每对卵要过两个月长成蝴蝶。
假设每个蝴蝶都不死的情况下,第一个月只有一对蝴蝶,且卵长成蝴蝶后的第一个月不产卵(过x个月产卵),问过z个月以后,共有多少对蝴蝶?
每对蝴蝶过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~~~
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)