二週:骨牌鋪方格——HDU - 2046
阿新 • • 發佈:2018-12-17
骨牌鋪方格
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; }