难度

  • 简单
  • 中等
  • 困难

    标签

    动态规划

    题目描述

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

    示例1:

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

    实例2:

    1. 输入:n = 5
    2. 输出:13

    题解

  1. class Solution {
  2. public int waysToStep(int n) {
  3. long[] dp = new long[n + 4];
  4. dp[1] = 1L;
  5. dp[2] = 2L;
  6. dp[3] = 4L;
  7. for(int i = 4; i <= n; i++) {
  8. dp[i] = (dp[i - 1] + dp[i - 2] + dp[i - 3]) % 1000000007L;
  9. }
  10. return (int)(dp[n]);
  11. }
  12. }