HDU 2018 递归序列

深入理解数据库原理
以实战为基础,以数据库原理为基础,结合实战,深入理解数据库原理。
wangxiaoming

母牛的故事

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 37247    Accepted Submission(s): 18415


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

Input
输入数据由多个测试实例组成,每个测试实例占一行,包括一个整数n(0<n<55),n的含义如题目中描述。
n=0表示输入数据的结束,不做处理。
 

Output
对于每个测试实例,输出在第n年的时候母牛的数量。
每个输出占一行。
 

Sample Input
2 4 5 0
 

Sample Output
2 4 6
 
解题方法:
  明白这是一个递归问题, 第 n 年的牛主要是前一年 的牛和第 n-3年的牛生的便可求解
递推题我很喜欢,它们写出来的代码都很简单。但关键看你能不能找到规律。
本题中,第n年的牛的来源有2中:
  • 第n-1年的牛
  • 第n-3年的牛所生的小牛
而递推的出口是第1年为1头,第2年为2头,第3年为3头。 
有初始条件,有循环 即可求解
源代码:
 
#include<iostream>
using namespace std;

int main()
{
    int f[55] = {1,2,3,4,6};//先对其初始化
    int n, i;
    //从第五年开始有要么是前一年牛,要么是n-3年生的牛
    for(i = 5;i < 55;i++)
    {
        f[i] = f[i-1] + f[i-3];
    }
    while(cin>>n && n)
    {
        cout<<f[n-1]<<endl;
    }
    return 0;
}

wangxiaoming CSDN认证博客专家 架构 Spring Boot Redis
博客是很好的总结和记录工具,如果有问题,来不及回复,关注微信公众号:程序员开发者社区,获取我的联系方式,向我提问,也可以给我发送邮件,联系 1275801617@qq.com
©️2020 CSDN 皮肤主题: Age of Ai 设计师: meimeiellie 返回首页
实付0元
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值