1190:上台阶

http://ybt.ssoier.cn:8088/problem_show.php?pid=1190

【题目描述】

楼梯有n(71>n>0)阶台阶,上楼时可以一步上1阶,也可以一步上2阶,也可以一步上3阶,编程计算共有多少种不同的走法。

【输入】

输入的每一行包括一组测试数据,即为台阶数n。最后一行为0,表示测试结束。

【输出】

每一行输出对应一行输入的结果,即为走法的数目。

【输入样例】
1
2
3
4
0
【输出样例】
1
2
4
7


#include<iostream>
using namespace std;
const int maxn=71;//课本里面100有误,long long 都会溢出
const int mod=32767;
long long f[maxn+1];

//f[i] = f[i-1] + f[i-2] + f[i-3]
void init()
{
     f[1]=1;
     f[2]=2;
     f[3]=4;
     for(int i=4;i<=maxn;i++)
     {
         f[i] = f[i-1] + f[i-2] + f[i-3];
//        cout<<f[i]<<endl;//可以输出看看有没溢出int
     }   
}
int main()
{
     init();
     int x;
     cin>>x;
     while(x!=0)
     {
         cout<<f[x]<<endl;
         cin>>x;
     }

    return 0;
}

原文地址:https://www.cnblogs.com/cute/p/15217840.html