题目介绍:
假设你正在爬楼梯。需要 n
阶你才能到达楼顶。
每次你可以爬 1
或 2
个台阶。你有多少种不同的方法可以爬到楼顶呢?
题解:
这个是力扣动态规划里面最基础的题目,一般人喜欢用递归的方式处理,但作为嵌入式软件工程师,必须时刻考虑RAM的有效使用,因此,递归也不是在任何时刻都能保持优雅。
用以下方式,同样能达到效果:
int climbStairs(int n) {
if(n <= 1){
return 1;
}
int count_buf[n + 1];
count_buf[1] = 1;
count_buf[2] = 2;
for(int i = 3; i < n + 1; i++){
count_buf[i] = count_buf[i-1] + count_buf[i-2];
}
return count_buf[n];
}
执行效果如下: