StackTc 2018-02-02 17:48 采纳率: 90.9%
浏览 1103
已采纳

LeetCode 70. Climbing Stairs

尴尬,看了答案看不懂,求解释。答案如下

 public class Solution {
    public int climbStairs(int n) {
        if (n == 1) {
            return 1;
        }
        int[] dp = new int[n + 1];
        dp[1] = 1;
        dp[2] = 2;
        for (int i = 3; i <= n; i++) {
            dp[i] = dp[i - 1] + dp[i - 2];
        }
        return dp[n];
    }
}

求解dp[i] = dp[i - 1] + dp[i - 2];这一步是为什么。

  • 写回答

4条回答 默认 最新

  • threenewbee 2018-02-03 15:01
    关注

    典型的动态规划算法

    动态规划算法的思想就是,每次解决问题的一部分

    后面的计算利用前面的结果,而不必每次从头算起。

    这里开了一个dp的数组,每次计算一个台阶。

    而当前台阶的走法是前面两个台阶走法的和。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?