思路

题干:一次走 1 或 2 步,只有两种选择,最终目标是到 n 层。

方法:dp[i] 表示走到 i 层包含的走法。

dp[i] = dp[i-1] + dp[i-2];

i: 1-n

注意事项

Code

#include <iostream>
using namespace std;

int main() {
    int n;
    int mod = 998244353;
    while (cin >> n) { // 注意 while 处理多个 case
        // dp[i] 表示走到 i 层包含的走法。
        // dp[i] = dp[i-1] + dp[i-2];
        // i: 1-n
        // dp[0] = 1;
        // dp[1] = 1;
        // dp[2] = 2;
        int i1 = 1, i2 = 1;
        int tmp = 1;
        for (int i = 2; i <= n; ++i) {
            tmp = (i1 + i2) % mod;
            i1 = i2 % mod;
            i2 = tmp % mod;
        }
        cout << tmp << endl;
    }
}
// 64 位输出请用 printf("%lld")