还有没有其他的解法
时间: 2024-02-11 12:09:02 浏览: 75
中国剩余定理的另一解法
除了动态规划和递归,我们还可以使用滚动数组来优化动态规划解法的空间复杂度。具体而言,我们只需要用三个变量表示 dp 数组中的最后三个元素,然后不断更新这三个变量即可。这样可以将空间复杂度优化到 O(1)。
以下是使用滚动数组的代码实现:
```c
#include <stdio.h>
int climbStairs(int n) {
if (n == 0 || n == 1) {
return 1;
}
if (n == 2) {
return 2;
}
int a = 1, b = 1, c = 2;
for (int i = 3; i <= n; i++) {
int d = a + b + c;
a = b;
b = c;
c = d;
}
return c;
}
int main() {
int n = 10;
int result = climbStairs(n);
printf("上 %d 级台阶的方案数为 %d\n", n, result);
return 0;
}
```
需要注意的是,滚动数组虽然优化了空间复杂度,但是也使得代码可读性稍差,需要注意变量的含义。
阅读全文