題目:爬樓梯一次只能爬1級或者2級,問從第1級臺階到第m級臺階有多少種爬法?
思路1:排列法求解。數太大,爆long long,故錯誤。
思路2:採用遞歸思想
因爲只有兩種跨越(爬1級或者爬2級),故
到達第m級樓梯的爬法=到達第m-1級的爬法(到達第m-1級後選擇爬1級的跨越方法,到達第m級)+到達m-2級的爬法(到達第m-2級後選擇爬2級的跨越方法,到達第m級)
故本題是一道斐波那契題,附AC代碼:
#include<iostream>
using namespace std;
int main()
{
int a[40];
a[0]=1,a[1]=1;
for(int i=2;i<40;i++)
{
a[i]=a[i-1]+a[i-2];
}
int n,m;
cin>>n;
while(n--)
{
cin>>m;
cout<<a[m-1]<<endl;
}
return 0;
}