请用c++帮我写一个解决超级楼梯问题的程序
时间: 2023-06-15 16:08:02 浏览: 99
好的,以下是一个使用动态规划思想的 C++ 程序,用于解决超级楼梯问题:
```cpp
#include <iostream>
using namespace std;
int main() {
int n;
cin >> n;
int dp[n + 1];
dp[0] = 1, dp[1] = 1;
for (int i = 2; i <= n; i++) {
dp[i] = dp[i - 1] + dp[i - 2];
}
cout << dp[n] << endl;
return 0;
}
```
程序中使用了一个数组 `dp` 用于保存每个阶梯的最优解,初始状态为 `dp[0] = 1` 和 `dp[1] = 1`,表示当只有 0 级或 1 级楼梯时,只有一种上楼梯的方法。接下来,对于每个 `i > 1`,都可以使用前面的结果计算 `dp[i] = dp[i - 1] + dp[i - 2]`,表示到达第 `i` 级楼梯的方法数为到达第 `i-1` 级和到达第 `i-2` 级的方法数之和。最后输出 `dp[n]`,即到达第 `n` 级楼梯的方法数。
例如,当输入 `n = 5` 时,程序输出 `8`,表示到达第 5 级楼梯的方法数为 8。
阅读全文