-
总时间限制:
- 1000ms 内存限制:
- 65536kB
-
描述
-
楼梯有n(100 > n > 0)阶台阶,上楼时可以一步上1阶,也可以一步上2阶,也可以一步上3阶,编程计算共有多少种不同的走法。
输入
- 输入的每一行包括一组测试数据,即为台阶数n。最后一行为0,表示测试结束。 输出
- 每一行输出对应一行输入的结果,即为走法的数目。 样例输入
-
1 2 3 4 0
样例输出
-
1 2 4 7
第n阶=第n-1阶走一步+第n-2阶走2步+第n-3阶走3步
#include <iostream>
using namespace std;
int f[10000];
int main()
{
f[0]=0;
f[1]=1;
f[2]=2;
f[3]=4;
for (int i=4; i<10000; i++)
{
f[i]=f[i-1]+f[i-2]+f[i-3];
}
int n;
while (cin>>n && n)
{
cout<<f[n]<<endl;
}
return 0;
}
(2)
#include <iostream>
#include <stdio.h>
using namespace std;
long ans;
void dfs(int n)
{
if(n<0)
{
return;
}
if(n==0)
{
ans++;
return;
}
for (int i=1; i<=3; i++)
{
dfs(n-i);
}
}
int main()
{
int n;
while (cin>>n && n)
{
ans=0;
dfs(n);
cout<<ans<<endl;
}
return 0;
}