您的位置:首页 > 其它

超级楼梯

2017-05-05 15:16 162 查看
/*

有一个楼梯,共有M级,刚开始时你在第一级,若每次只能跨上一级或者两级,要走上这M级,一共有多少种走法?

输入:

输入包含一个整数N,表示测试的实例的组数,然后是n行数据,每行包含一个整数M,表示楼梯的级数。M的取值为1到40.
*/

递推求解

#include<iostream>

using namespace std;

long long data[42];

int main()

{

    int n,m;

    cin>>n;

    data[1]=1;

    data[2]=1;

    for(int i=3;i<=40;i++)

        data[i]=data[i-1]+data[i-2];

    for( int i=1;i<=n;i++)

    {

        cin>>m;

        cout<<data[m]<<endl;

    }

    return 0;

}

递归求解:

#include<iostream>

#include<cstring>

using namespace std;

long long data[42];

int lt(int n)

{

    if(n==1||n==2)

        return 1;

    if(data
==0)

        data
=lt(n-1)+lt(n-2);

    return data
;

}

int main()

{

    int n,m;

    memset(data,0,sizeof(data));

    cin>>n;

    for( int i=1;i<=n;i++)

    {

        cin>>m;

        cout<<lt(m)<<endl;

    }

    return 0;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: