【算法】母牛数目问题
2017-05-14 18:11
302 查看
题目描述
有一头母牛,它每年年初生一头小母牛。每头小母牛从第四个年头开始,每年年初也生一头小母牛。请编程实现在第n年的时候,共有多少头母牛?输入
输入数据由多个测试实例组成,每个测试实例占一行,包括一个整数n(0 < n < 55),n的含义如题目中描述。n=0表示输入数据的结束,不做处理。
输出
对于每个测试实例,输出在第n年的时候母牛的数量。每个输出占一行。
样例输入
24
5
0
样例输出
24
6
分析
第n年 | f(n) |
---|---|
1 | 1 |
2 | 2 |
3 | 3 |
4 | 4 |
5 | 6 |
6 | 9 |
7 | 13 |
8 | 19 |
9 | 28 |
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; }
相关文章推荐
- 白菜Oj 1122: [视频]最大匹配1(二分图)(元问题byscy):公牛母牛配 <匈利亚算法>
- 母牛生产问题;第一年有一头小母牛,3年之后每年都生一头小母牛,假设都不死,第n年共有多少母牛,输出n从1到20的母牛数目
- 一个小的算法问题解决
- TSP问题的遗传算法--转载
- TSP问题的贪婪算法
- 伴随开发人员成长的问题:工程重要,还是算法重要?细节重要,还是架构重要?
- 从最大子段和问题看算法的优化问题
- 伴随开发人员成长的问题:工程重要,还是算法重要?细节重要,还是架构重要?
- 5位哲学家吃饭问题(算法描述)
- 变态题大串烧:微软面试问题 -- 六.算法题——实学考验
- 几个算法的问题
- 母牛问题。
- [梦里原创]关于猫和老鼠的问题(程序算法)
- [转]算法讨论:哲学家就餐问题
- 一个算法问题
- 分类算法要解决的问题
- 恶补算法与数据结构(一)——排列问题
- [c#算法和数据结构]约瑟夫环问题
- 二分图最大匹配问题匈牙利算法
- 伴随开发人员成长的问题:工程重要,还是算法重要?细节重要,还是架构重要?