骨牌覆蓋問題,就是用 1x2 大小的骨牌,鋪設乙個給定大小的乙個矩形區域,要求必須鋪滿,且不可以超出邊界。問總的鋪設方案數字多少?
這一類問題就是骨牌覆蓋問題。
不同規模的資料有不同的方法。
下面來看看最簡單的 2×n 區域裡面的鋪設方法數。
n=0,一種; n=1 為一種 ; n=2,兩種;n=3,5種;
較為容易看出是斐波拉契數列;所以快速冪矩陣求斐波拉契數列;如果看不出來為什麼是菲波拉契數的可以放一放,看看下面的3×n的方法之後,你就可以試著來證明2×n的為什麼是這個數列。
再來看看 3×n;我們可以來腿一下遞推關係。我們可以假設我們已經放好 i 行的骨牌,即將要放 第 i+1 行的骨牌。則第 i 行的骨牌狀態有
有這8中狀態。 上一行的某一種狀態能不能到這種狀態,需要乙個對應關係。用乙個二維陣列記錄到這個狀態的方案數。
所以一開始用二維陣列記錄
陣列行數代表在第幾排,列數代表該一排的某一狀態。一次一次遞推下去便可以。
我們剛剛說了需要乙個狀態的對應關係,那個關係是上乙個狀態能否得到這個狀態,我把這個關係用箭頭表示,能到達的狀態用箭頭來指向它。
我們得到這幅對應關係,就是得到了遞推關係。所以,我們可以根據這幅圖構造乙個矩陣。
便得到這個矩陣。
然後矩陣快速冪;
便可以求出答案;
骨牌覆蓋問題
骨牌覆蓋問題 用1 2骨牌完美覆蓋n m棋盤,求方案數 如果骨牌橫著放,只能兩個橫著的骨牌摞在一起 如果豎著放,恰好佔一列 所以dp i dp i 1 dp i 2 即斐波那契數列 可以想到乙個遞推式 f n a2 f n 2 a4 f n 4 a6 f n 6 an f 0 ai i是偶數 是未知...
骨牌覆蓋問題二
描述 上一周我們研究了2xn的骨牌問題,這一周我們不妨加大一下難度,研究一下3xn的骨牌問題?所以我們的題目是 對於3xn的棋盤,使用1x2的骨牌去覆蓋一共有多少種不同的覆蓋方法呢?首先我們可以肯定,奇數長度一定是沒有辦法覆蓋的 對於偶數長度,比如2,4,我們有下面幾種覆蓋方式 輸入第1行 1個整數...
hihoCoder 骨牌覆蓋問題 一
時間限制 10000ms 單點時限 1000ms 記憶體限制 256mb 描述骨牌,一種古老的玩具。今天我們要研究的是骨牌的覆蓋問題 我們有乙個2xn的長條形棋盤,然後用1x2的骨牌去覆蓋整個棋盤。對於這個棋盤,一共有多少種不同的覆蓋方法呢?舉個例子,對於長度為1到3的棋盤,我們有下面幾種覆蓋方式 ...