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条)

报告相同问题?

悬赏问题

  • ¥15 Python时间序列如何拟合疏系数模型
  • ¥15 求学软件的前人们指明方向🥺
  • ¥50 如何增强飞上天的树莓派的热点信号强度,以使得笔记本可以在地面实现远程桌面连接
  • ¥15 MCNP里如何定义多个源?
  • ¥20 双层网络上信息-疾病传播
  • ¥50 paddlepaddle pinn
  • ¥20 idea运行测试代码报错问题
  • ¥15 网络监控:网络故障告警通知
  • ¥15 django项目运行报编码错误
  • ¥15 STM32驱动继电器