骨牌覆盖问题

Posted theroadtothegold

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了骨牌覆盖问题相关的知识,希望对你有一定的参考价值。

骨牌覆盖问题:

用1*2骨牌完美覆盖n*m棋盘,求方案数

 

一、2*m

如果骨牌横着放,只能两个横着的骨牌摞在一起

如果竖着放,恰好占一列

所以dp[i]=dp[i-1]+dp[i-2]

即斐波那契数列

 

二、3*m

可以想到一个递推式:f[n]=a2*f[n-2]+a4*f[n-4]+a6*f[n-6]+……+an*f[0]

ai(i是偶数)是未知的系数

即覆盖3*i棋盘且无法按某一列将3*i棋盘分成左右两部分的方案数

当i=2时,有3种方案

当i>=4(i为偶数)时,只有2种

因为考虑最左上角的骨牌,如果竖着放,要想无法被分割,除了最右上角的竖着放,其余都要横着放

如果最左上角的骨牌横着放,与他竖着放是对称的

所以f[n]=3*f[n-2]+2*f[n-4]+2*f[n-6]+……+2*f[0]

同理得f[n-2]=3*f[n-4]+2*f[n-6]+……+2*f[0]

两式相减,得f[n]=4*f[n-2]-f[n-4]

 

三、n*m

https://www.cnblogs.com/TheRoadToTheGold/p/12202781.html

以上是关于骨牌覆盖问题的主要内容,如果未能解决你的问题,请参考以下文章

6n2*3n骨牌问题

[HIHO1143]骨牌覆盖问题·一(矩阵快速幂,递推)

骨牌覆盖

动态规划-状态压缩-覆盖

棋盘覆盖问题——分治法

1031 骨牌覆盖