骨牌覆蓋問題

2022-03-01 06:43:32 字數 805 閱讀 7905

骨牌覆蓋問題,就是用  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的棋盤,我們有下面幾種覆蓋方式 ...