2018 母牛的故事

关键字: 代码分享 杭电100题

问题描述

Problem Description

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

Input

输入数据由多个测试实例组成,每个测试实例占一行,包括一个整数n(0<n<55),n的含义如题目中描述。

n=0表示输入数据的结束,不做处理。

Output

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

每个输出占一行。

Sample Input

2
4
5
0

Sample Output

2
4
6

问题分析

Problem Analyse

本题是为C语言初学者提供的。

简单的递推题

Algorithm Analyse

递推题我很喜欢,它们写出来的代码都很简单。但关键看你能不能找到规律。

本题中,第n年的牛的来源有2中:

  1. 第n-1年的牛
  2. 第n-3年的牛所生的小牛

而递推的出口是第1年为1头,第2年为2头,第3年为3头。

算法实现

知道了递推的规律,就可以写出方程了:

f(n) = f(n-1) + f(n-3);  (n > 3)
f(n) = n; (n <= 3)

因为这是重复计算的过程。你可以把结果都保存在数组里。

参考源码

redraiment使用Emacs Lisp批量迁移《HDU 2011-2019》