假设你爬楼梯,需要n阶才能到顶,每次可以爬1或2个台阶。可以有多少种爬法到楼,用C语言编写
时间: 2024-10-13 21:12:59 浏览: 33
基于Yolov5-DeepSort的物体计数器,可以统计车流或人流量等
这是一个典型的动态规划问题,可以用C语言解决。我们可以通过创建一个数组`dp`来存储每层到达的不同方式数,其中`dp[i]`表示到达第`i`阶楼梯的不同方法数。
以下是C语言的一个解决方案:
```c
#include <stdio.h>
int climbStairs(int n) {
// 初始化前两个值
int dp[100] = {0, 1, 2}; // 基本情况:0阶、1阶和2阶各有1种方法
// 从第三阶开始递推
for (int i = 3; i <= n; i++) {
dp[i] = dp[i-1] + dp[i-2]; // 根据动态规划原理,上一步要么是从i-1阶直接上来,要么是从i-2阶加1步上来
}
return dp[n];
}
int main() {
int steps;
printf("请输入楼梯阶数:");
scanf("%d", &steps);
int ways = climbStairs(steps);
printf("爬到楼顶的不同方法有 %d 种。\n", ways);
return 0;
}
```
当你运行这个程序并输入楼梯阶数,它将返回达到指定层数的所有不同爬楼梯方案数。
阅读全文