您的位置:首页 > 其它

【算法】母牛数目问题

2017-05-14 18:11 302 查看

题目描述

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

输入

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

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

输出

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

每个输出占一行。

样例输入

2

4

5

0

样例输出

2

4

6

分析

第n年f(n)
11
22
33
44
56
69
713
819
928
根据上面列出的表格,可以得到规律:

fn = fn-1 + fn-3

其中,fn-1是上一年的基数,而fn-3则是这一年出生的小母牛的数量

n < 4 时,母牛的数量需要手动来输出

代码

#include <stdio.h>

int main(void)
{
int i, n;
int fn, fn_1, fn_2, fn_3; // means f(n), f(n-1), f(n-2), f(n-3)

while (scanf("%d", &n) && n != 0)
{
// 每次输入 n 后都要重置 f(n-1), f(n-2), f(n-3) 的值
fn_1 = 1;
fn_2 = 2;
fn_3 = 3;
switch(n)
{
case 1:
printf("1\n");
break;
case 2:
printf("2\n");
break;
case 3:
printf("3\n");
break;
default:
for (i = 4; i <= n; i++)
{
// 把f(n)计算出来后,分别赋于f(n-1), f(n-2), f(n-3)对应的值
fn = fn_1 + fn_3;
fn_1 = fn_2;
fn_2 = fn_3;
fn_3 = fn;
}
printf("%d\n", fn);
break;
}
}

return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  算法