【组合数学】棋盘的完美覆盖问题

1.问题描述

有一个8*8的国际象棋棋盘,如下图1。假设我们有一些多米诺骨牌,每个骨牌刚好覆盖住棋盘上两个相邻的方格,也就是每个骨牌的大小都为1*2(或者2*1),如果用这些骨牌来覆盖棋盘,有多少种覆盖方法?

国际象棋棋盘
图1.国际象棋棋盘

进一步思考这个问题,假如棋盘的大小是m*n,又有多少种覆盖方法?

我们将问题简化一下,请问3*n的棋盘,有多少种完美覆盖?

2.问题分析

2.1  n的范围及方格数量对解的影响

首先我们要考虑的问题是:n可以是任意正整数吗?

假如n=1,显然这个问题无解,n=3,这个问题也无解,其实这是个简单的逻辑,一个骨牌需要占两个方格,也就是说方格总数必须是2的倍数,也就是说n必须是偶数,这样才能保证3*n的棋盘的完美覆盖问题有解。

那么,只要是方格数为偶数就一定有解了吗?答案是否定的。假如我们将图1的左上角和右下角的黑色方格同时去掉,那么还剩下62块方格,但此时一样无解。我们需要注意的是,去掉的偶数个方格中,黑色方格数必须等于白色方格数,这样问题才有解!因为骨牌覆盖的一定是一块白色和一块黑色。

2.2   排列组合

图2.排列示意图

 我们以图2为例,看一下排列组合的方式。

首先,我们看一下3*2的棋盘有多少种排列组合方式。如下图所示。

3*2一共就以上三种排列方式(注:右图有两种,倒过来)。

接着我们看一下3*4的棋盘有多少种排列方式。除了可以分为两个3*2外,还有可能如下图所示。

注意,这也是两种。(倒过来)

也就是我们可以得到f(2)=3;f(4)=3*3+2

我们不难看出,能不能从中间切开是这个问题的重点。而切不切这是两种可能,结合以上我们的推论,我们不难得出

f(n)=3*f(n-2)+2*f(n-4)+\: \: \: \: \: \: \: \: \: \: +2*f(0)

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值