​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;

}