一个猴子要爬上30级台阶,假设猴子一步可以跳1级或3级台阶,问30级台阶有多少种不同的跳法,c++或者c语言实现
时间: 2024-10-24 15:15:36 浏览: 44
Silverlight 3 高级编程(C#篇
这是一个经典的动态规划问题,通常称为“爬楼梯”问题。在C++中,你可以通过一个二维数组来解决,记录每层台阶的不同跳跃方式数。以下是C++的实现:
```cpp
#include <iostream>
using namespace std;
int climbStairs(int n) {
if (n == 1 || n == 2) {
return n;
}
int dp[31] = {0}; // 初始化dp数组
dp[1] = 1; // 第一级只有一种跳法
dp[2] = 2; // 第二级有两种跳法:直接跳1步或跳2步
for (int i = 3; i <= n; ++i) {
dp[i] = dp[i - 1] + dp[i - 2]; // 每一层都可以从上两层跳过来
}
return dp[n];
}
int main() {
int steps = 30;
cout << "有 " << climbStairs(steps) << " 种不同的跳法可以到达第 " << steps << " 级台阶。";
return 0;
}
```
在这个程序中,`climbStairs`函数计算到达指定台阶的不同跳法。注意我们处理了特殊情况n=1和n=2,因为这两种情况可以直接给出结果。
阅读全文