棋盘覆盖算法
来源:互联网 发布:房屋室外设计软件 编辑:程序博客网 时间:2024/05/16 13:05
本文原创,转载请注明来源网址:http://blog.csdn.net/piyajee
作者:piyajee
在一个2^k*2^k个方格组成的棋盘中,若恰有一个方格与其它方格不同,则称该方格为一特殊方格,称改棋盘为一特殊棋盘。显然特殊方格在棋盘上出现的位置有4^k种情形。因而对任何k>=0,有4^k种不同的特殊棋盘。下图所示的特殊棋盘为k=2时16个特殊棋盘中的一个。
<!--@page { margin: 2cm }P { margin-bottom: 0.21cm }-->
在棋盘覆盖问题中,要用下图中4中不同形态的L型骨牌覆盖一个给定的特殊棋牌上除特殊方格以外的所有方格,且任何2个L型骨牌不得重叠覆盖。易知,在任何一个2^k *2^k的棋盘中,用到的L型骨牌个数恰为(4^k-1)/3。
<!--@page { margin: 2cm }P { margin-bottom: 0.21cm }-->
用分治策略,可以设计解棋盘问题的一个简捷的算法。
特殊方格必位于4个较小子棋盘之一中,其余3个子棋盘中无特殊方格。为了将这3个无特殊方格的子棋盘转化为特殊棋盘,我们可以用一个L型骨牌覆盖这3个较小的棋盘的汇合处,如下图所示,这3个子棋盘上被L型骨牌覆盖的方格就成为该棋盘上的特殊方格,从而将原问题化为4个较小规模的棋盘覆盖问题。递归的使用这种分割,直至棋盘简化为1x1棋盘。
<!--@page { margin: 2cm }P { margin-bottom: 0.21cm }-->
在此举例:
4*4棋盘:
最终结果
填图顺序
<!--@page { margin: 2cm }P { margin-bottom: 0.21cm }-->
对于4*4棋盘的调用层次研究:
<!--@page { margin: 2cm }P { margin-bottom: 0.21cm }-->
需要重点说明的是,第一层填充(制造特殊方格)总是填充整个棋盘的中心,如图所示:
源码:
- 棋盘覆盖算法
- 棋盘覆盖算法
- 棋盘覆盖算法
- 棋盘覆盖算法
- java 棋盘覆盖算法
- 棋盘覆盖算法
- 分治算法--棋盘覆盖
- 棋盘覆盖问题 算法
- 棋盘覆盖算法
- 棋盘覆盖算法
- 分治算法---棋盘覆盖
- 棋盘覆盖算法代码
- 贪心算法棋盘覆盖
- 算法设计☞棋盘覆盖
- 算法[递归]-棋盘覆盖问题
- 棋盘覆盖(分治算法)
- 【编程素质】算法-棋盘覆盖
- 棋盘覆盖问题-经典算法
- php 5 Iterator 内部接口
- let me post my first CSDN blog.
- zoj 1180 Self Numbers
- vb.net 下 WinForm + webservice 三层架构 的要求,编写,调用。
- 发现一个好很玩的网站,很给力的哦.
- 棋盘覆盖算法
- Datasqueeze v2.0.7
- 什么是交换机路由器?是如何工作的?
- poj3468——A Simple Problem with Integers
- HttpClient提交XML格式数据
- access2007 使用手记:Access用OleDbParameter无法更新数据
- 杂谈系统与VC中的环境变量
- pl/sql导出表结构和表数据
- SQL SERVER访问Oracle数据库服务器的几种方法