蓝桥杯之母牛的故事-动态规划+归纳版(c++实现)

蓝桥杯之母牛的故事-动态规划+归纳版(c++实现)上文链接 蓝桥杯之景点游览 较优解 交换排序 c 实现 题目描述 有一头母牛 它每年年初生一头小母牛 每头小母牛从第四个年头开始 每年年初也生一头小母牛 请编程实现在第 n 年的时候 共有多少头母牛 输入

大家好,我是讯享网,很高兴认识大家。

上文链接:蓝桥杯之景点游览-较优解:交换排序(c++实现)


题目描述

有一头母牛,它每年年初生一头小母牛。每头小母牛从第四个年头开始,每年年初也生一头小母牛。请编程实现在第n年的时候,共有多少头母牛?

输入

输出


讯享网

样例输入

2
4
5
0

样例输出

2
4
6

该算法之我的思路

  • 首先查找某年份母牛数和新增母牛数之间的关系,详细参考图片在这里插入图片描述
    根据规律我先计算某年份母牛数新增表,在根据母牛数新增表计算某年份母牛数表
  • 我利用输入年份数时确定年份的最大值,在此基础上仅对上述的新增表和母牛数表生成一次即可完成该算法,这样节省了重复计算的时间。

算法展示

#include <iostream> using namespace std; int main() { 
    int n[100],j=0;//定义输入变量:n年数组,n的个数j  cin>>n[j]; //输入n年数组并记录年份最大值max  int max = n[j]; while(n[j]){ 
    j++; cin>>n[j]; if(n[j]>max)max = n[j]; } int years[100],i;//定义某年份对应母牛数表  years[0]=years[1]=years[2]=years[3]=1;//初始化某年份对应母牛数表的值  //生成某年份对应新增母牛数表  for( i = 4;i<max;i++) { 
    years[i]=years[i-1]+years[i-3]; } //生成某年份对应母牛数表(不是新增母牛数表)  for( i =1;i<max;i++) { 
    years[i]=years[i]+years[i-1]; } //根据年份母牛数生成表查找对应年份母牛数并输出  for( i = 0;i<j;i++) { 
    cout<<years[n[i]-1]<<endl; } return 0; } 

讯享网

下文链接:蓝桥杯之Cylinder-数学知识+归纳(c++实现)

小讯
上一篇 2025-02-25 16:43
下一篇 2025-03-24 09:36

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/58506.html