思路
题干:一次走 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")