題目連結:
已知導盲磚為寬度為 2 單位,長度為 n 單位長的矩形。現有 2 × 1 、 1 × 1 兩種磁磚。給定一正整數 K ,代表接下來有 K 列輸入。每列輸入有一正整數 n ( n ≦ 30 ),求有多少種排列方式。
下圖分別為 n = 1 、 n = 2 、 n = 3 的情況:
3
1
2
3
2
7
22
解題思維:
題目的圖示有做一些提示。
我們可以看到藍色虛線區域的方法數是由 n - 2 的方法加上 2 個 2 × 1 矩形所形成。
還有那些沒有被框起來的方法是由 n - 1 的方法分別加上「1 個 2 × 1」或是 「2 個 1 × 1 」所成。
但是紅色虛線的區域則比較特別。以下稱 n 的方法數為 Fn ,而面積為 2 × n 但是最右上或最右下缺一個 1 × 1 的磚道方法數為Gn 。
所以我們可以觀察到紅色區域即為 Gn-1 。而 Gn 的值是由 2 × Fn-1 + Gn-1 過來的。因為可以在 Fn-1 最右上或最右下放 1 個 1 × 1 的磁磚、在 Gn-1 的缺口放 1 條 2 × 1 的矩形。
而現在我們知道 Fn 為 2 × Fn-1 + Fn-2 + Gn-1 。因此Gn可以簡化為
Gn = Fn - Fn-2
而把上式帶回 Fn 的式子可以得到
2 × Fn-1 + Fn-2 + (Fn-1 - Fn-3)
因此,n 的方法數 = Fn = 3 × Fn-1 + Fn-2 - Fn-3。
接著,就照著上面的遞迴式將 n ≦ 30 的方法數全部預先算出,看輸入什麼數字,再輸出相應的答案。
此次分享到此為止,如有任何更加簡潔的想法或是有說明不清楚之地方,也煩請各位大大撥冗討論。