做题思路
在一个2k×2k 个方格组成的棋盘中,恰有一个方格与其它方格不同,称该方格为一特殊方格,且称该棋盘为一特殊棋盘。在棋盘覆盖问题中,要用图示的4种不同形态的L型骨牌覆盖给定的特殊棋盘上除特殊方格以外的所有方格,且任何2个L型骨牌不得重叠覆盖。
数学归纳法推证有解
当n=1(2ⅹ2棋盘),该问题有解
假设当n=k时(2kⅹ2k棋盘),该问题有解
那么当n=k+1时(2k+1ⅹ2k+1棋盘),将棋盘划分为4个2kⅹ2k子棋盘,特殊方格位于4个子棋盘之一中,而其他3个子棋盘中无特殊方格。
如何将这3个无特殊方格的子棋盘转化为特殊棋盘?
用一个L型骨牌覆盖这3个较小棋盘的会合处,将原问题转化为4个n=k时的子问题,因为n=k时有解,所以n=k+1时也有解。
如何实现棋盘覆盖
棋盘覆盖实现的基本方法为分治法
分治法的基本思路:将一个规模为n的问题分解为k个规模较小的子问题,这些子问题相互独立且与原问题相同。递归地解决这些子问题,然后将各个子问题的解合并得到原问题的解。简单地说,就是将规模为n的问题自顶向下分解,直到小问题分解到足够小,可以解决时,再自底向上合并,从而得到原来的解。
当k=0时,无骨牌
当k>0时,棋盘规模为2kⅹ2k棋盘,则可以划分为四个2k-1ⅹ2k-1棋盘,且其中一个有特殊方格,在递归之前则可以像上面数学归