描述
有一楼梯共m级,刚开始时你在第一级,若每次只能跨上一级或二级,要走上第m级,共有多少走法?
注:规定从一级到一级有0种走法。
输入
输入数据首先包含一个整数n(1<=n<=100),表示测试实例的个数,然后是n行数据,每行包含一个整数m,(1<=m<=40), 表示楼梯的级数。
输出
对于每个测试实例,请输出不同走法的数量。
样例输入
2 2 3
样例输出
1 2
#include <iostream>
#include <cstring>
 
using namespace std;
 
int main()
{
    int ans[50][20];
    int n,m,i,j,k,t;
    memset(ans,0,sizeof(ans));
    ans[2][0]=1;
    ans[3][0]=2;
    cin>>n;
    while(n--)
    {
        cin>>m;
 
        if(m<=3)
            cout<<m-1<<endl;
        else 
        {
            for(i=4;i<=m;i++)
            {
                for(j=0,k=0;j<20;j++)
                {
                    ans[i][j]=(ans[i-1][j]+ans[i-2][j]+k)%10;
                    k=(ans[i-1][j]+ans[i-2][j]+k)/10;
                }
            }
            t=19;
            while(0==ans[m][t])
                t--;
            while(t>=0)
                cout<<ans[m][t--];
            cout<<endl;
        }
    }
    return 0;
}原文地址:http://blog.csdn.net/u011694809/article/details/46344351