題目:
知道應該用遞迴遞推來做,但是一直找不到規律
……拖了好久,終於決定今天做完。苦思無果搜題解,發現**只有幾行
…… 遞推遞迴果然神奇啊!!!
思路:f(1)=1,f(2)=2,f(3)=5
,當有n
個方格的時候,有兩種鋪法:
1)先鋪好
n-1個格,有
f(n-1)
個方法,再鋪第
n層的時候只有一種方法,所以總方法是1
*f(n-1);
2)先鋪好
n-2格,有
f(n-2)
個方法,再鋪後面兩層的時候只能兩個都橫著鋪(否則與第一種情況重複),所以也只有一種情況,總方法數是
1*f(n-2)
再沒有其他情況了。
推出f(n)=f(n-1)+f(n-2)
提交情況:2次
tle,
兩次wa
ac code:
view code
1先開始寫了乙個子函式遞迴,於是超時了,改用陣列寫,#include
<
stdio.h
>
2#include
<
stdlib.h
>
3int
main () ;
7for
(i =
3; i
<=
51; i++)
8a[i]
=a[i -1
] +a[i -2
];9while(~
scanf ("%d
", &n))
10printf (
"%i64d\n
", a[n]);
11//
system ("pause");
12return0;
13}
a[n]
開成了int
型,溢位了,於是wa了
……這種找規律的題還是要多多練習才行啊!
HDU2046骨牌鋪方格
description 在2 n的乙個長方形方格中,用乙個1 2的骨牌鋪滿方格,輸入n 輸出鋪放方案的總數.例如n 3時,為2 3方格,骨牌的鋪放方案有三種,如下圖 input 輸入資料由多行組成,每行包含乙個整數n,表示該測試例項的長方形方格的規格是2 n 0 output 對於每個測試例項,請輸...
HDU 2046 骨牌鋪方格
遞迴總體思路 對於 1張 1 2 的骨牌,它只有橫放 豎放2種情況 如果要豎放,前 n 1 張牌必須已經固定好,因而這種情況下,就是 f n 1 同理,如果要橫放,前 n 2 張牌必須已經固定好,這種情況下,就是 f n 2 把2種情況下的方案加起來,就是 n 張骨牌的放置方案總數 也可參見這個題解...
hdu2046 骨牌鋪方格
在2 n的乙個長方形方格中,用乙個1 2的骨牌鋪滿方格,輸入n 輸出鋪放方案的總數.例如n 3時,為2 3方格,骨牌的鋪放方案有三種,如下圖 輸入資料由多行組成,每行包含乙個整數n,表示該測試例項的長方形方格的規格是2 n 0對於每個測試例項,請輸出鋪放方案的總數,每個例項的輸出佔一行。1 3 2 ...