1. 程式人生 > >二週:骨牌鋪方格——HDU - 2046

二週:骨牌鋪方格——HDU - 2046

骨牌鋪方格
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 68695 Accepted Submission(s): 33029

Problem Description
在2×n的一個長方形方格中,用一個1× 2的骨牌鋪滿方格,輸入n ,輸出鋪放方案的總數.
例如n=3時,為2× 3方格,骨牌的鋪放方案有三種,如下圖:

Input
輸入資料由多行組成,每行包含一個整數n,表示該測試例項的長方形方格的規格是2×n (0<n<=50)。

Output
對於每個測試例項,請輸出鋪放方案的總數,每個例項的輸出佔一行。

Sample Input

1
3
2

Sample Output

1
3
2
在這裡插入圖片描述

問題連結:HDU - 2046

問題簡述:在2n的格子中放n個12的拍子。多組輸入輸出。

問題分析:最後的那塊拍子有兩種放置方式,第一種豎放,那麼前n-1格有f(n-1)種方案,第二種橫放,前n-2格有f(n-2)種方案,構成斐波那契數列。

程式說明:先用s[i]=s[i-1]+s[i-2]把數列算出,再輸入n的值來表示輸出陣列中的第n-1個。

AC通過程式碼:

#include<stdio.h>

int main()
{
	int n;
	long long s[50]={0};
	int i;
	s[0]=1;s[1]=2;
	for(i=2;i<50;i++)
	{
		s[i]=s[i-1]+s[i-2];
	}
	while(scanf("%d",&n)!=EOF)
	{
		printf("%lld\n",s[n-1]);
	} 
	return 0;
}