Tromino谜题的解法

本文介绍了一种使用分治算法解决Tromino谜题的方法。通过将大棋盘分解成多个小棋盘,递归地处理每个2*2的子问题,最后在合适的子矩阵中应用L型瓦片,确保覆盖所有位置但不重叠。在8*8的棋盘上,当遇到缺失方块时,问题被拆解为四个4*4的子问题,进一步分解直到2*2的棋盘,之后逐步回溯并填充瓦片。
摘要由CSDN通过智能技术生成

题目:Tromino 是一个由棋盘上的三个邻接方块组成的L型瓦片,我们的问题是,如何用tromino覆盖一个缺少了一个方块(可以在棋盘上的任何位置)的(2^n)*(2^N)棋盘。除了这个缺少的方块,tromino应该覆盖棋盘上的所有方块,而且不能重叠。

原题见《算法设计与分析基础》98页。

 

思想是使用分治法,即把大问题划分为几个小问题。8*8的化为4个4*4的,4*4的化为四个2*2的,当化为2*2的时候,解法就很简单了,直接把2*2矩阵中另外三个位置用L型瓦片覆盖就行了。当返回到上一层4*4矩阵的时候,把与刚才2*2矩阵相邻的三个位置用一块瓦片覆盖。因为瓦片占三个位置,恰好在剩下三个矩阵中每个占一个位置,然后又生成了另外三个2*2且每个都缺一个位置的问题。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值