棋盘完全覆盖问题

问题分析:将12型的骨牌填充到mn的棋盘当中,使其完全覆盖而且任何骨牌不能重叠。将问题缩小成同类型子问题。
思路:先从2n和3n的棋盘入手看其然后将其进行对更大的棋盘执行覆盖,再使用排列组合问题进行求解问题。
在这里插入图片描述
奇数列不能填充,扩大最小项为两列一单位记函数f(n)f(n)f(n)为在n nn列时的覆盖方案数目,f(0)=1f(0)=1f(0)=1,f(2)f(2)f(2)我们以两列为一个单位,他与f ( 0 )的排列总数有关,而f ( 2 ) = 3 是0号位置的排列数目之和*[1-2]位置的排列方法数目,因此初始化为1. 再来看看f(4) f(4)f(4),图Ⅰ。首先考虑他最右边两列有三种情况,承上之前的排列数即f(2)*3f(2)*3f(2)∗3,四列也可能为图Ⅱ,得出f(0)*2f(0)*2f(0)*2。图Ⅰ

图Ⅱ
递推得出f(n)=3f(n-2)+2f(n-4)+2f(n-6)+…+f(0)
#include<bits/stdc++。h>
using namespace std;
const int maxn=1<<12;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值