zoukankan      html  css  js  c++  java
  • 程序员面试金典-面试题 08.01. 三步问题

    题目:

    三步问题。有个小孩正在上楼梯,楼梯有n阶台阶,小孩一次可以上1阶、2阶或3阶。实现一种方法,计算小孩有多少种上楼梯的方式。结果可能很大,你需要对结果模1000000007。

    示例1:

    输入:n = 3
    输出:4
    说明: 有四种走法
    示例2:

    输入:n = 5
    输出:13
    提示:

    n范围在[1, 1000000]之间

    分析:

    要走第n阶时,可以由n-1阶上1阶,可以由n-2阶上2阶,可以由n-3阶上3阶而来,也就是前三次走法的和。注意求余。

    程序:

    class Solution {
        public int waysToStep(int n) {
            if(n < 1)
                return 0;
            if(n == 1)
                return 1;
            if(n == 2)
                return 2;
            if(n == 3)
                return 4;
            long[] res = new long[n+1];
            res[1] = 1;
            res[2] = 2;
            res[3] = 4;
            for(int i = 4; i <= n; ++i){
                res[i] = (res[i-1] + res[i-2] + res[i-3])% 1000000007;
            }
            return (int)res[n];
        }
    }
  • 相关阅读:
    python-多任务-进程
    注解_Annotation
    ZIP压缩输入/输出流
    什么是API,这篇文章让你豁然开朗
    异常处理(在控制台输入数据)
    控件监听与面板监听
    多态与继承
    Java——socketser与cli
    20170307
    20180305
  • 原文地址:https://www.cnblogs.com/silentteller/p/12455118.html
Copyright © 2011-2022 走看看