zoukankan      html  css  js  c++  java
  • 杭电ACM2018--母牛的故事

    母牛的故事

    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 <= 4) return n;
        else return (sum(n-1) + sum(n - 3));
    }
    int main()
    {
        int n;
        while (~scanf("%d", &n) != EOF&&n!=0)
            printf("%d
    ", sum(n));
        getchar();
        return 0;
    }
    #include<stdio.h>
    //迭代 
    int main()
    {
        int f1,f2,f3,fn,i,n;
        while(~scanf("%d",&n)&&n!=0)
        {
            if(n==1)fn=1;
            else if(n==2)fn=2;
            else if(n==3)fn=3;
            else
            {
                f1=1;
                f2=2;
                f3=3;
                for(i=4;i<=n;i++)
                {
                    fn=f1+f3;
                    f1=f2;       
                    f2=f3;
                    f3=fn;    
                }
            }    
            printf("%d
    ",fn);
        }
        return 0;
     } 
  • 相关阅读:
    在IIS7.5中ASP.NET调用cmd程序拒绝访问决绝方法小记
    WindowsCE project missing Microsoft.CompactFramework.CSharp.targets in Visual Studio 2008
    Windows 10预览版14316开启Bash命令支持
    批量文件重命名工具
    多说使用ua-parser-js显示浏览器和系统信息
    Hexo主题实现多级分类显示
    MS SQL Server 数据库分离-SQL语句
    Windows应用程序快捷方式创建工具
    第三方登录插件.NET版XY.OAuth-CSharp
    Microsoft Visual Studio 2008 未能正确加载包“Visual Web Developer HTML Source Editor Package” | “Visual Studio HTM Editor Package”
  • 原文地址:https://www.cnblogs.com/lightice/p/10261270.html
Copyright © 2011-2022 走看看