简单题意:有一楼梯共M级,刚开始时你在第一级,若每次只能跨上一级或二级,要走上第M级,共有多少种走法?
解题思路:对于两层楼梯,你可以选择一步跨上,也可以选择分两步跨上去,一共这两种方法,所以对于N层台阶,就有f(n)=f(n-1)+f(n-2).
代码如下;
#include <iostream>
using namespace std;
int main()
{
long long dp[45];
dp[2]=1;
dp[3]=2;
int N,m,flag=3;
cin>>N;
while(N--)
{
cin>>m;
if(m<=flag)
cout<<dp[m]<<endl;
else
{
for(int i=flag+1;i<=m;++i)
dp[i]=dp[i-1]+dp[i-2];
flag=m;
cout<<dp[m]<<endl;
}
}
return 0;
}