母牛的故事

博客探讨了使用递推思想解决母牛生育问题的方法,强调动态规律变化的重要性。每头母牛从第二年开始每年生一头小母牛,小母牛在第四年开始也如此。递推公式为f(n) = f(n-1) + f(n-3)。通过分类讨论和规律推演求解第n年时的母牛总数。

think:
1递推思想——动态变化,之前的座位问题有一种分类讨论的思想,而这个题目感觉在递推规律的寻找中展现着一种动态规律变化的思想,题目题点之一在母牛从第二年年初生一头小母牛,每头小母牛从第四个年初开始生一头小母牛,需要注意的是小母牛再生母牛与其出生的年之间相差的是三年,枚举情况的时候可以把每一年不同岁数牛的不同数目枚举出来,这样有利于推演下一年的母牛数,其实当前年的母牛数等于前一年的母牛数加上新出生的母牛数,同样蕴含着数学中分类讨论进而归纳规律的解决问题的思想,之前的推演就是为了得到新出生的母牛数,递推规律为f(n) = f(n-1)+f(n-3)
2分类讨论进而寻找规律进而归纳规律进而用规律式进行表示进而解决实际问题,展现了一种探索规律的思想方法

sdut题目链接

母牛的故事
Time Limit: 1000MS Memory Limit: 65536KB

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

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

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

Example Input
2
4
5
0

Example Output
2
4
6

Hint

Author
HDOJ

以下为accepted代码

#include <iostream>
#include <algorithm>
#include <cstdio>

using namespace std;

int main()
{
    int n, i;
    long long ans[64];
    ans[1] = 1;
    ans[2] = 2;
    ans[3] = 3;
    for(i = 4; i <= 55; i++)
    {
        ans[i] = ans[i-1] + ans[i-3];
    }
    while(scanf("%d", &n) && n != 0)
    {
        printf("%lld\n", ans[n]);
    }
    return 0;
}


/***************************************************
User name: 
Result: Accepted
Take time: 0ms
Take Memory: 152KB
Submit time: 2017-03-25 15:20:21
****************************************************/
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值