用C++做以下题目楼梯有n(71>n>0)阶台阶,上楼时可以一步上1阶,也可以一步上2阶,也可以一步上3阶,编程计算共有多少种不同的走法
时间: 2024-05-06 12:22:11 浏览: 190
问题描述:有n级台阶,一个人每次上一级或者两级,问有多少种走完n级台阶的方法。
5星 · 资源好评率100%
```c
#include <stdio.h>
int main() {
int n, i;
long long f[72]; // 注意要开 long long 类型的数组
scanf("%d", &n);
f[1] = 1;
f[2] = 2;
f[3] = 4;
for (i = 4; i <= n; i++) {
f[i] = f[i-1] + f[i-2] + f[i-3];
}
printf("%lld", f[n]);
return 0;
}
```
解释:
题目中要求计算不同的走法数量,这个数量可以用动态规划来求解。设 $f_i$ 表示上 $i$ 级台阶的不同走法数量,那么有:
$$
f_i = f_{i-1} + f_{i-2} + f_{i-3}
$$
这个式子的意思是,如果要上 $i$ 级台阶,可以从 $i-1$ 级台阶上来,也可以从 $i-2$ 级台阶上来,还可以从 $i-3$ 级台阶上来。这样,我们就可以用动态规划来求解了。
注意,题目中给出的 $n$ 的范围是 $71 > n > 0$,这个范围比较大,所以要开 long long 类型的数组。
阅读全文