1 条题解
-
0
明白了,你这个题目是 爬楼梯问题,它实际上也是一个 斐波那契数列的递推问题:
问题分析
- 每次可以走 1 级或 2 级楼梯。
- 设
f(n)表示爬n级楼梯的方法数,则递推公式为:
[ f(n) = f(n-1) + f(n-2) ]
-
边界条件:
f(1) = 1(1级楼梯只有一种方法)f(2) = 2(走1+1 或 直接走2)
-
这就是标准的 Fibonacci 递推,只是初始值不同。
C++ 递推实现(迭代)
#include <iostream> using namespace std; int main() { int n; while (cin >> n) { // 多行输入 if (n == 1) { cout << 1 << endl; continue; } if (n == 2) { cout << 2 << endl; continue; } int a = 1, b = 2, c; for (int i = 3; i <= n; i++) { c = a + b; // 当前方法数 = 前两级之和 a = b; b = c; } cout << c << endl; } return 0; }输入输出示例:
输入:
5 8 10输出:
8 34 89✅ 结果与截图中的示例完全一致。
- 1
信息
- ID
- 3315
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 7
- 标签
- 递交数
- 50
- 已通过
- 12
- 上传者
粤公网安备44195502000195号