额,感觉这是一道水题,明显可知递推公式是vec[i] = vec[i - 2] + vec[i - 1],当然此时楼梯的级数必然大于2,至少级数为1或2的两种情况直接例外处理就好了,除此之外没有什么麻烦的地方。
class Solution {
public:
int climbStairs(int n) {
if (n == 1)
return 1;
if (n == 2)
return 2;
vector<int> vec(n, 1);
vec[1] = 2;
for (int i = 2; i < n; i++) {
vec[i] = vec[i - 2] + vec[i - 1];
}
return vec[n - 1];
}
};
本文介绍了一个经典的动态规划问题——爬楼梯问题,并提供了一种C++的解决方案。通过递推公式vec[i]=vec[i-2]+vec[i-1]来计算不同楼梯级数的爬法数量。
319

被折叠的 条评论
为什么被折叠?



