C语言小明爬楼梯,如果每次可以上一个台阶或者两个台阶或者3个台阶,那么上 n 级台阶一共有多少种方案?
时间: 2024-02-11 18:09:31 浏览: 93
问题描述:有n级台阶,一个人每次上一级或者两级,问有多少种走完n级台阶的方法。
5星 · 资源好评率100%
可以使用动态规划的思想解决这个问题,具体实现如下:
```c
#include <stdio.h>
int main() {
int n;
int f[100]; // 用数组保存每一级台阶的方案数
printf("请输入台阶数 n:");
scanf("%d", &n);
// 初始条件
f[1] = 1;
f[2] = 2;
f[3] = 4;
// 递推计算每一级台阶的方案数
for (int i = 4; i <= n; i++) {
f[i] = f[i-1] + f[i-2] + f[i-3];
}
printf("上 %d 级台阶的方案数为:%d\n", n, f[n]);
return 0;
}
```
在这个程序中,我们用一个数组 `f` 来保存每一级台阶的方案数。初始时,我们先计算出上 1、2、3 级台阶的方案数,然后使用递推公式计算出上每一级台阶的方案数,最终得到上 n 级台阶的方案数。
阅读全文