计算机算法设计与分析之棋盘覆盖问题

本文探讨了棋盘覆盖问题,分析了解题思路并提供了代码实现。通过将特殊格子视为子棋盘的起点,将原问题分解为多个相同规模的子问题,然后递归地解决每个子棋盘,最终实现棋盘的完全覆盖。代码解释部分详细阐述了算法的具体操作。
摘要由CSDN通过智能技术生成

一、引子

最近又重新上了算法课,现在想来有点汗颜,大学期间已经学习了一个学期,到现在却依然感觉只是把老师讲过的题目弄懂了,并没有学到算法的一些好的分析方法和思路,碰到一个新的问题后往往感觉很棘手,痛定思痛之后觉得还是好好再学习一遍,争取能理解透彻每种算法的思路和核心,同时也劝诫各位同行们做事要脚踏实地,不能应付老师的作业,最后吃亏的还是自己啊。


二、棋盘覆盖问题

       在一个由2^k *2^k个方格组成的棋盘中,恰有一个方格与其他方格不同,称该方格为一特殊方格,且称该棋盘
为一特殊棋盘。现有四种L型骨牌如下图所示,要用这四种骨牌覆盖棋盘上除特殊方格之外的其他所有格子,且两个L型骨牌不能相互覆盖。
      

三、解题思路

对于复杂问题,我们的一种常用思路是简化问题,简化到我们能一眼能看出问题的答案,这里也一样。
当k=1时,问题简化为一个2*2的棋盘的问题,由于只有四个格子,且含有一个特殊格子,这样就只能用一个对应的L型骨牌覆盖了,问题已经很简单了。
在此 我们重新定义四种L型骨牌:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值