楼梯有n阶台阶,上楼可以一步上1 阶,也可以一步上2阶。 探究共有多少种不同的走法。用C语言写程序
时间: 2024-10-07 11:02:06 浏览: 60
这是一个经典的动态规划问题,通常被称为“爬楼梯”问题。可以用递推的方式来解决,我们可以创建一个数组 `dp`,其中 `dp[i]` 表示到达第 i 阶台阶的不同走法数。基本思路是从前往后遍历,对于每个位置,有两种情况:
1. 如果从上一阶(`dp[i - 1]`)跳到当前阶,则走法增加了 `dp[i - 1]` 种;
2. 如果从前两阶(`dp[i - 2]`)直接跳到当前阶,则走法增加了 `dp[i - 2]` 种。
初始条件是 `dp[0] = 1` 和 `dp[1] = 1`(因为走到第一阶和第二阶各有1种走法),然后通过循环计算出所有阶数的走法数。
以下是简单的 C 语言实现:
```c
#include <stdio.h>
int climbStairs(int n) {
int dp[n + 1];
dp[0] = 1; // 初始步数为0时,只有一种走法
dp[1] = 1; // 第一级也只有一种走法
for (int i = 2; i <= n; ++i) {
dp[i] = dp[i - 1] + dp[i - 2]; // 加上前两级的走法
}
return dp[n]; // 返回最后一级的走法数
}
int main() {
int stairs = 5; // 修改这个值以测试不同阶数的走法
printf("共有 %d 种不同的走法。\n", climbStairs(stairs));
return 0;
}
```
你可以将 `stairs` 变量设置为任意正整数来查看对应阶数的走法。如果你需要更详细的理解或遇到问题,请告诉我,我会尽力解答。
阅读全文