超级楼梯

xiaoxiao2021-02-28  100

/* 有一个楼梯,共有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[n]==0)         data[n]=lt(n-1)+lt(n-2);     return data[n]; } 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; }

转载请注明原文地址: https://www.6miu.com/read-28327.html

最新回复(0)