一、引子
最近又重新上了算法课,现在想来有点汗颜,大学期间已经学习了一个学期,到现在却依然感觉只是把老师讲过的题目弄懂了,并没有学到算法的一些好的分析方法和思路,碰到一个新的问题后往往感觉很棘手,痛定思痛之后觉得还是好好再学习一遍,争取能理解透彻每种算法的思路和核心,同时也劝诫各位同行们做事要脚踏实地,不能应付老师的作业,最后吃亏的还是自己啊。
二、棋盘覆盖问题
在一个由2^k *2^k个方格组成的棋盘中,恰有一个方格与其他方格不同,称该方格为一特殊方格,且称该棋盘
为一特殊棋盘。现有四种L型骨牌如下图所示,要用这四种骨牌覆盖棋盘上除特殊方格之外的其他所有格子,且两个L型骨牌不能相互覆盖。
为一特殊棋盘。现有四种L型骨牌如下图所示,要用这四种骨牌覆盖棋盘上除特殊方格之外的其他所有格子,且两个L型骨牌不能相互覆盖。
三、解题思路
对于复杂问题,我们的一种常用思路是简化问题,简化到我们能一眼能看出问题的答案,这里也一样。
当k=1时,问题简化为一个2*2的棋盘的问题,由于只有四个格子,且含有一个特殊格子,这样就只能用一个对应的L型骨牌覆盖了,问题已经很简单了。
在此
我们重新定义四种L型骨牌: