1. 程式人生 > >HDU_oj_2046 骨牌鋪方格

HDU_oj_2046 骨牌鋪方格

bottom 長方形 size acm output mes ace itl body

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 分析: 又是典型的遞歸問題 第n個規格的種數取決於第n-1個的規格和第n-2個的規格 兩種情況
第n個規格的前一個如果是豎放,則這種情況有F(n-1)種 ②第n個規格是兩個橫放的,則這種情況有F(n-2)種 所以,F(n)=F(n-1)+F(n-2) 註意點:
 1 //遞歸解法,但不是遞歸寫法
 2 #include<iostream>
 3 using namespace std;
 4 
 5 int main()
 6 {
 7     int n;
 8     long long fx,fy,fz;
 9     while(cin>>n)
10     {
11         fx=1;fy=2;
12         if(n==1)
13
cout<<fx<<endl; 14 else if(n==2) 15 cout<<fy<<endl; 16 else 17 { 18 n-=2; 19 while(n--) 20 { 21 fz=fy+fx; 22 fx=fy; 23 fy=fz; 24 } 25 cout<<fz<<endl;
26 } 27 } 28 }

HDU_oj_2046 骨牌鋪方格