HDU 2041 超級樓梯(入門題)

Problem Description

有一樓梯共M級,剛開始時你在第一級,若每次只能跨上一級或二級,要走上第M級,共有多少種走法?

 

Input

輸入數據首先包含一個整數N,表示測試實例的個數,然後是N行數據,每行包含一個整數M(1<=M<=40),表示樓梯的級數。

 

Output

對於每個測試實例,請輸出不同走法的數量

 

Sample Input

2

2

3

 

Sample Output

1

2

 題意很明顯,沒什麼難懂的,我們可以假設如果我要上到第m級階梯,那我最後一步就有兩種可能,第一,我從第m-1級上到第m級,第二 我從第m-2級上到第m級,從第m-1 級和m-2級上到第m級都只有一種方法( 說m-2到m是兩種的自己再仔細想想),所有接下來就好辦了 話不多說,上代碼。(注意如果使用函數遞歸調用,可能會在某些限制下造成內存超限)

#include<iostream>
using namespace std;

int main ( )
{
	int N, m, a[40], i;
	cin >> N;
	for ( i = 0; i < 40; i ++ )
	{
		if ( i == 0 || i == 1 )
		{
			a[i] = i + 1;
		}
		else a[i] = a[i-1] + a[i-2];
	}
	while ( N -- )
	{
		cin >> m;
		cout << a[m-2] << endl;
	}
	return 0;
}

 

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