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];
                }
    
            }
    

      

  • 相关阅读:
    SQL优化系列(三)- 用最少的索引获得最大的性能提升
    SQL优化系列(二)- 优化Top SQL
    SQL优化神器
    优化SQL之最快等价SQL
    ngnix反向代理导致请求头header中的信息丢失
    centos7安装docker
    (一)硬盘技术
    (四)存储行业基础知识
    (三)磁盘阵列技术
    硬盘的文件类型解释!
  • 原文地址:https://www.cnblogs.com/anorthwolf/p/3133400.html
Copyright © 2011-2022 走看看