杭電2041超級樓梯

題目:爬樓梯一次只能爬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;
}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章