母牛的故事

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

Problem Description
有一头母牛,它每年年初生一头小母牛。每头小母牛从第四个年头开始,每年年初也生一头小母牛。请编程实现在第n年的时候,共有多少头母牛?
 
Input
输入数据由多个测试实例组成,每个测试实例占一行,包括一个整数n(0<n<55),n的含义如题目中描述。
n=0表示输入数据的结束,不做处理。
 
Output
对于每个测试实例,输出在第n年的时候母牛的数量。
每个输出占一行。
 
Sample Input
2
4
5
0
 
Sample Output
2
4
6

 
这道题涉及的内容是递归化成递推,这类型的题以后会演化成动态规划,重在练习和思考!!
首先拿到题目想到的就是动物繁殖典型例子斐波那契数列,fn=f(n-1)+f(n-2)
同样的,本题可以枚举他前十个数来观察,很多题目都可以这么做,ACM一部分感觉就是在玩小学找规律T T
回到正题··然后得到fn=f(n-1)+f(n-3)
有了这个就可以直接递归了AC了~~
再深入一些学习这道题,把繁琐的递归转成迭代,我个人是用两个概念来引导自己思考
1.有所有状态的状态方程
2.找出各个状态的转换式
状态方程即是  fn=f(n-1)+f(n-3)
转换式可以这么尝试,举个例子吧~
如:
假如每年的牛数量都是已知的
第四年的牛等于第三年的牛加第一年的牛
第五年的牛等于第四年的牛加第二年的牛 
fn=f1+f3;   这里完成了fn的状态转化
 
第一年的牛过了一年成了第二年的牛
f1=f2;  这里完成了f1的状态转化

第三年的牛过了一年成了第四年的牛

f2=f3;  这里是记录第二年过了一年成第三年没用上的
f3=fn;  这里完成了f2的状态转化

然后就可以有以下代码

#include<stdio.h>
//递归
int sum(int n)
{
if (n <= ) return n;
else return (sum(n-) + sum(n - ));
}
int main()
{
int n;
while (~scanf("%d", &n) != EOF&&n!=)
printf("%d\n", sum(n));
getchar();
return ;
}
#include<stdio.h>
//迭代
int main()
{
int f1,f2,f3,fn,i,n;
while(~scanf("%d",&n)&&n!=)
{
if(n==)fn=;
else if(n==)fn=;
else if(n==)fn=;
else
{
f1=;
f2=;
f3=;
for(i=;i<=n;i++)
{
fn=f1+f3;
f1=f2;
f2=f3;
f3=fn;
}
}
printf("%d\n",fn);
}
return ;
}

杭电ACM2018--母牛的故事的更多相关文章

  1. 杭电ACM1408——盐水的故事

    简单的题目,RT,就能够写出代码.须要注意的是类型的应用,应该用浮点型. 以下的是AC的代码: #include <iostream> using namespace std; int m ...

  2. 杭电ACM分类

    杭电ACM分类: 1001 整数求和 水题1002 C语言实验题——两个数比较 水题1003 1.2.3.4.5... 简单题1004 渊子赛马 排序+贪心的方法归并1005 Hero In Maze ...

  3. 函数递归简单题-hdoj-2044 2018-一只小蜜蜂 母牛的故事

    题目:一只小蜜蜂 递归做法: #include<cstdio> #include<iostream> #include<stdlib.h> #include< ...

  4. SCAU1143 多少个Fibonacci数--大菲波数【杭电-HDOJ-1715】--高精度加法--Fibonacci数---大数比较

    /*******对读者说(哈哈如果有人看的话23333)哈哈大杰是华农的19级软件工程新手,才疏学浅但是秉着校科联的那句“主动才会有故事”还是大胆的做了一下建一个卑微博客的尝试,想法自己之后学到东西都 ...

  5. acm入门 杭电1001题 有关溢出的考虑

    最近在尝试做acm试题,刚刚是1001题就把我困住了,这是题目: Problem Description In this problem, your task is to calculate SUM( ...

  6. 杭电acm 1002 大数模板(一)

    从杭电第一题开始A,发现做到1002就不会了,经过几天时间终于A出来了,顺便整理了一下关于大数的东西 其实这是刘汝佳老师在<算法竞赛 经典入门 第二版> 中所讲的模板,代码原封不动写上的, ...

  7. 杭电OJ——1198 Farm Irrigation (并查集)

    畅通工程 Problem Description 某省调查城镇交通状况,得到现有城镇道路统计表,表中列出了每条道路直接连通的城镇.省政府"畅通工程"的目标是使全省任何两个城镇间都可 ...

  8. 高手看了,感觉惨不忍睹——关于“【ACM】杭电ACM题一直WA求高手看看代码”

    按 被中科大软件学院二年级研究生 HCOONa 骂为“误人子弟”之后(见:<中科大的那位,敢更不要脸点么?> ),继续“误人子弟”. 问题: 题目:(感谢 王爱学志 网友对题目给出的翻译) ...

  9. C#利用POST实现杭电oj的AC自动机器人,AC率高达50%~~

    暑假集训虽然很快乐,偶尔也会比较枯燥,,这个时候就需要自娱自乐... 然后看hdu的排行榜发现,除了一些是虚拟测评机的账号以外,有几个都是AC自动机器人 然后发现有一位作者是用网页填表然后按钮模拟,, ...

随机推荐

  1. 好几个div(元素)找到最后一个

    <div> <div></div> <div></div> <div></div> </div> //找 ...

  2. Hadoop2.41的HA的配置与启动

    我配置HA机制创建了7台虚拟机 1.修改Linux主机名2.修改IP3.修改主机名和IP的映射关系 ######注意######如果你们公司是租用的服务器或是使用的云主机(如华为云主机.阿里云主机等) ...

  3. java 基本类型包装类,system类,Math类,Assrays类,大数据运算

    实现字符串与基本数据之间转换 将字符串转成基本数据类型方法 例如:将字符串转成成int类型 String str ="123"; int a =Integer.parseInt(s ...

  4. Gatling简单测试SpringBoot工程

    前言 Gatling是一款基于Scala 开发的高性能服务器性能测试工具,它主要用于对服务器进行负载等测试,并分析和测量服务器的各种性能指标.目前仅支持http协议,可以用来测试web应用程序和RES ...

  5. 【Python3爬虫】最新的模拟登录新浪微博教程

    一.写在前面 首先呢,由于之前重装系统,又要重新配置环境,然后还有一些别的事,导致我一直没有写爬虫了,不过现在又可以继续写了. 然后我这次说的模拟登录新浪微博呢,不是使用Selenium模拟浏览器操作 ...

  6. Python中的那些“坑”

    1.哪个是True,哪个是False? 这里要看三组代码: # 第一组: >>>a=256 >>>b = 256 >>>a is b # 第二组: ...

  7. 深度解密Go语言之关于 interface 的10个问题

    目录 1. Go 语言与鸭子类型的关系 2. 值接收者和指针接收者的区别 方法 值接收者和指针接收者 两者分别在何时使用 3. iface 和 eface 的区别是什么 4. 接口的动态类型和动态值 ...

  8. Asp.NETCore轻松学系列阅读指引目录

    前言 耗时两个多月,坚持写这个入门系列文章,就是想给后来者更好更快的上手体验,这个系列可以说是从入门到进阶,适合没有 .NETCore 编程经验到小白同学,也适合从 .NET Framework 迁移 ...

  9. solr 学习笔记1

    创建核心(帮助: solr create_core -help) 例子: solr create_core -c mjj_core -d /var/solr/mjj_config (-c 是核心名称 ...

  10. 模板方法模式 Template method 行为型 设计模式(二十六)

    模板方法模式 Template method 上图为网上百度的一份简历模板截图   相信大家都有求职的经历,那么必然需要简历,写简历的时候,很可能你会网上检索一份简历模板,使用此模板的格式,然后替换为 ...