一.题目
二.思路
使用递归的思想
到达第N阶台阶的方法数量=第N-1阶台阶向上爬一层+第N-2阶台阶向上爬二层
=到达第N-1阶台阶方法+到达第N-2阶台阶的方法
因此定义一个数组int num[N+1],先给第一二层两个台阶赋予初值,num[1]=1,num[2]=2
之后的循环遍历num[i]=num[i-1]+num[i-2]
最后返回num[N]即可
三,代码实现
#include<iostream>
using namespace std;
const int max_N = 5001;
int num[max_N] = { 0 };
class Solution {
public:
int climbStairs(int n) {
num[1] = 1;
num[2] = 2;
for (int i = 3; i <= n; i++) {
num[i] = num[i - 1] + num[i - 2];
}
return num[n];
}
};