爬楼梯(每日一题-简单)
题解:n=2的时候,有两种方法,n=3的时候,有三种方法。
再往下自己算出来4和5的情况(列举),可以发现答案是一个斐波那契数列。
动态规划的思想:
本问题可以分解成多个子问题:爬第n阶楼梯的方法数量,等于 2 部分之和。
爬第n阶楼梯的方法数量=爬第n-1阶楼梯的方法数量+爬第n-2阶楼梯的方法数量。
因为爬到第n-1阶楼梯之后,再爬1阶就能到,爬第n-2阶楼梯之后,再爬2阶就能到。
代码:
class Solution {public int climbStairs(int n) {int[] dp=new int[n+1];dp[0]=1;dp[1]=1;for(int i=2;i<=n;i++){dp[i]=dp[i-1]+dp[i-2];}return dp[n];}
}