杭電oj HDOJ 2046 骨牌鋪方格(遞推)

2021-10-03 07:41:54 字數 1033 閱讀 4751

在2×n的乙個長方形方格中,用乙個1× 2的骨牌鋪滿方格,輸入n ,輸出鋪放方案的總數.

例如n=3時,為2× 3方格,骨牌的鋪放方案有三種,如下圖:

輸入資料由多行組成,每行包含乙個整數n,表示該測試例項的長方形方格的規格是2×n (0對於每個測試例項,請輸出鋪放方案的總數,每個例項的輸出佔一行。

本題與前幾題一樣也是利用「遞推」來求解。

我們可以統計n較小時的一些結果,來尋找遞推公式。

**中的第一行表示有幾個牌是立著放的情況。第一列表示n的值。**的內容則表示該種情況下有多少種鋪牌方法。

從最後的「鋪法數」可以看出n個牌的鋪放方案數=n-1個牌的鋪放方案數+n-2個牌的鋪放方案數。

/*

我的vs2019編譯器使用「scanf」時會提示

「error c4996: 'scanf': this function or variable may be unsafe」

的錯誤,用下行的「定義」來解決這個錯誤提示!

*/#define _crt_secure_no_warnings

#include

#include

using

namespace std;

intmain()

/* 不知道是什麼原因,當我使用cin和cout,平台會提示編譯出錯,使用scanf和printf則會ac

其他人對本題講解也有使用cin和cout的,不知道他們出沒出現我的這個問題。。。

while (cin >> n)

*/while

(scanf

("%d"

,&n)

!=eof

)return0;

}

**通過hdoj平台執行檢查,如發現錯誤,歡迎指出和糾正,謝謝!

杭電 骨牌鋪方格C 版

problem description 在2 n的乙個長方形方格中,用乙個1 2的骨牌鋪滿方格,輸入n 輸出鋪放方案的總數.例如n 3時,為2 3方格,骨牌的鋪放方案有三種,如下圖 輸入資料由多行組成,每行包含乙個整數n,表示該測試例項的長方形方格的規格是2 n 0output 對於每個測試例項,請...

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 張骨牌的放置方案總數 也可參見這個題解...