题目
Leetcode70. 爬楼梯
假设你正在爬楼梯。需要 n 阶你才能到达楼顶。
每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?
注意:给定 n 是一个正整数。
题解
最近做了好多动态规划的题啊,然而还是有点迷糊
本题可以分成多个子问题,爬第n阶楼梯的方法数量,等于 2 部分之和
- 爬上n−1 阶楼梯的方法数量。因为再爬1阶就能到第n阶
- 爬上n−2 阶楼梯的方法数量,因为再爬2阶就能到第n阶
然后就转成的斐波那契数列的求解
class Solution {
public:
int climbStairs(int n) {
int dp[n+2];
dp[1]=1;//爬一阶有一种方法
dp[2]=2;//爬两阶有两种方法
for(int i=3;i<=n;i++)
dp[i]=dp[i-1]+dp[i-2];
return dp[n];
}
};