zoukankan      html  css  js  c++  java
  • A child is running up a staircase with N steps, and can hop either 1 step,2steps,3 steps at a time. Count how many possible ways the child can run up

    A child is running up a staircase with N steps, and can hop either 1 step,2steps,3 steps at a time. Count how many possible ways the child can run up the stairs.

     class Upstaircase
        {
            static void Main(string[] args)
            {
                /* Enter your code here. Read input from STDIN. Print output to STDOUT */
    
                //string line1 = System.Console.ReadLine().Trim();
    
                System.Console.WriteLine(Upstaircase.countWaysDP(2,new int[100]));
                System.Console.WriteLine(Upstaircase.countWaysDP(3, new int[100]));
                System.Console.WriteLine(Upstaircase.countWaysDP(4, new int[100]));
                System.Console.WriteLine(Upstaircase.countWaysDP(5, new int[100]));
                System.Console.WriteLine(Upstaircase.countWaysDP(36, new int[100]));
                System.Console.WriteLine(Upstaircase.countWaysDP(38, new int[100]));
                Console.Read();
    
            }
          //O(3^n). exponential
            public static int countWays(int n)
            {
                if (n<0)
                {
                    return 0;
                }
                else if (n==0)
                {
                    return 1;
                }
                else
                {
                    return countWays(n - 1) + countWays(n - 2) + countWays(n - 3);
                }
    
            }
            //DP: dynamic programing.   up to 37 will overflowed.  Using Long type is just delay but not resolve it.
            public static int countWaysDP(int n,int[] map)
            {
                if (n < 0)
                {
                    return 0;
                }
                else if (n == 0)
                {
                    return 1;
                }
                else if (map[n] > 0)
                {
                    return map[n];
                }
                else
                {
                    map[n] = countWaysDP(n - 1, map) + countWaysDP(n - 2,map) + countWaysDP(n - 3,map);
                    return map[n];
                }
    
            }
    

      

  • 相关阅读:
    zabbix_agent 主动模式配置
    zabbix 监控ipmi
    超级详细全截图化VMware 安装ubantu
    docker 部署
    C# DataTable和List转换操作类
    C#类型转换工具类
    C# 注册windows 服务
    C# wsdl.exe 生成类文件
    visual studio code download url
    c# xml序列化和反序列化
  • 原文地址:https://www.cnblogs.com/anorthwolf/p/3133400.html
Copyright © 2011-2022 走看看