骨牌覆盖问题

骨牌覆盖问题:

用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

posted @ 2020-01-16 20:22  TRTTG  阅读(584)  评论(0编辑  收藏  举报