用C++编写“输入包含若干行,每行包含一个正整数N,代表楼梯级数,1 <= n<= 50,最后一行为0,表示测试结束,输出:不同的走法数,每一行输入对应一行输出”
时间: 2023-06-15 17:07:47 浏览: 49
以下是使用递归方式实现的代码,注意要处理好输入和输出:
```c++
#include <iostream>
using namespace std;
int dfs(int n) {
if (n == 0) {
return 1;
} else if (n < 0) {
return 0;
} else {
return dfs(n - 1) + dfs(n - 2) + dfs(n - 3);
}
}
int main() {
int n;
while (cin >> n && n != 0) {
cout << dfs(n) << endl;
}
return 0;
}
```
使用动态规划方式的代码如下:
```c++
#include <iostream>
using namespace std;
long long dp[55];
int main() {
dp[0] = 1;
for (int i = 1; i <= 50; i++) {
dp[i] = dp[i - 1];
if (i >= 2) {
dp[i] += dp[i - 2];
}
if (i >= 3) {
dp[i] += dp[i - 3];
}
}
int n;
while (cin >> n && n != 0) {
cout << dp[n] << endl;
}
return 0;
}
```
阅读全文