问题描述
小U最近决定挑战一座非常高的楼梯,每次他可以选择走一步或两步,但有一个重要的限制:他不能连续走两步。因此,小U想知道他总共有多少种不同的方式可以从楼梯的底部走到顶端。
你需要帮他计算在给定的楼梯层数下,小U有多少种走法。
测试样例
样例1:
输入:
n = 2
输出:2
样例2:
输入:
n = 3
输出:3
样例3:
输入:
n = 4
输出:4
#include <iostream>
int solution(int n) {
if (n == 0)
return 1;
if (n == 1)
return 1;
if (n == 2)
return 2;
int a = 1, b = 1, c = 2; // dp[0], dp[1], dp[2]
for (int i = 3; i <= n; ++i) {
int next = c + a;
a = b;
b = c;
c = next;
}
return c;
}
int main() {
// Add your test cases here
std::cout << (solution(2) == 2) << std::endl;
return 0;
}