切換
舊版
前往
大廳
主題

ZeroJudge - c914: 導盲磚 解題心得

Not In My Back Yard | 2018-12-22 23:53:33 | 巴幣 2 | 人氣 246

題目連結:


題目大意:
已知導盲磚為寬度為 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 的方法數為 F ,而面積為 2 × n 但是最右上或最右下缺一個 1 × 1 的磚道方法數為G

所以我們可以觀察到紅色區域即為 Gn-1 。而 G 的值是由 2 × Fn-1 + Gn-1 過來的。因為可以在 Fn-1 最右上或最右下放 1 個 1 × 1 的磁磚、在 Gn-1 的缺口放 1 條 2 × 1 的矩形。

而現在我們知道 Fn 為 2 × Fn-1 + Fn-2 + Gn-1 。因此G可以簡化為
= F - Fn-2
而把上式帶回 Fn 的式子可以得到
2 × Fn-1 + Fn-2 + (Fn-1 - Fn-3
因此,n 的方法數 = F3 × Fn-1 + Fn-2 - Fn-3

接著,就照著上面的遞迴式將 n ≦ 30 的方法數全部預先算出,看輸入什麼數字,再輸出相應的答案。
此次分享到此為止,如有任何更加簡潔的想法或是有說明不清楚之地方,也煩請各位大大撥冗討論。

創作回應

更多創作