这题我们用递推写(其实就是超级弱鸡的动态规划)
上代码:
//上台阶
#include <iostream>
#include <cstring>
using namespace std;
typedef long long LL;
LL dp[75];
int main() {
int n;
while (cin >> n) {
if (!n)
break;
memset(dp, 0, sizeof dp);
/*
状态设置
dp[i] 从第0级到第i级的走法
状态转移
dp[i] = dp[i - 1] + dp[i - 2] + dp[i - 3];
初始化
dp[1] = 1, dp[2] = 2, dp[3] = 4;
输出
cout << dp[n];
*/
dp[1] = 1, dp[2] = 2, dp[3] = 4;
for (int i = 4; i <= n; i ++)
dp[i] = dp[i - 1] + dp[i - 2] + dp[i - 3];
cout << dp[n] << '\n';
}
return 0;
}
原题链接:信息学奥赛一本通(C++版)在线评测系统 (ssoier.cn)
请勿转载,创作不易,留个赞再走吧(●'◡'●)