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

      

  • 相关阅读:
    Oracle、Db2、SqlServer、MySQL 数据库插入当前系统时间
    Mybatis---在控制台打印sql语句
    多线程实现的四种方法
    Restful架构
    maven中的pom配置文件一——spring,mybatis,oracle,jstl,json,文件上传
    spring mvc配置
    spring的事务
    cglib动态代理
    jdk动态代理
    spring总结————AOP面向切面总结
  • 原文地址:https://www.cnblogs.com/anorthwolf/p/3133400.html
Copyright © 2011-2022 走看看