一、棋盘覆盖

二、解题步骤

1、在给定的8x8的方格中如何实现题目中要求的效果,因需用L型的骨牌覆盖,因其仅占三个格子无法与8x8形成联系,因此我们可以利用分治算法将其划分为小单元,与L型产生联系进行处理。

2、如何使其他格子与特殊格子产生联系;

(1)因我们采用分治算法,依次将大格子进行划分;划分为四个小格子,特殊格子仅位于其中一个,那我们必须给剩余三个格子找出属于他们自己的特殊格子(用箭头标注);

(2)取划分后的四个格子其中一个进一步划分,与(1)的原理一致;

(3)取划分后的四个格子其中一个进一步划分得,与(1)的原理一致;

最终的划分后的格子长度唯1,已无法再进行4等分,则截止;

其余的3个4x4部分也依照此法依次划分;

三、 代码实现

package p4.分治回溯;import java.util.Scanner;//棋盘覆盖问题
public class ChessBoardCoverage {private static int BOARD_SIZE = 8;private static int[][] board = new int[BOARD_SIZE][BOARD_SIZE];//代表颜色 同一组L骨牌 编号应该是一样的private static int title = 0;   // 0就是特殊方格的存在public static void main(String[] args) {Scanner input = new Scanner(System.in);System.out.print(">>>请输入特殊方格的角标信息:");//dr dc 指的是特殊方格的坐标int dr = input.nextInt();int dc = input.nextInt();chessBoard(0, 0, dr, dc,BOARD_SIZE);printBoard();}private static void printBoard() {for (int i = 0; i < BOARD_SIZE; i++) {for (int j = 0; j < BOARD_SIZE; j++) {System.out.print(board[i][j] + "\t");}System.out.println();}}//在size*size的矩阵中 以tr tc为四部分子矩阵的基点 dr dc是特殊矩阵的位置 进行填充private static void chessBoard(int tr, int tc, int dr, int dc, int size) {//判断递归结束 如果尺寸为1 则不可继续拆分 则返回 归if (size == 1) {return;}//该层要填充L型骨牌 编号是一致的int num = ++title;//该层要继续分四个部分 每个部分的尺寸是多少int s = size / 2;//判断特殊方格在四个部分中 那个部分里//左上if (dr < tr + s && dc < tc + s) {chessBoard(tr,tc,dr,dc,s);} else {board[tr + s - 1][tc + s - 1] = num;chessBoard(tr,tc,tr + s - 1,tc + s - 1,s);}//右上if (dr < tr + s && dc >= tc + s) {chessBoard(tr,tc + s,dr,dc,s);} else {board[tr + s - 1][tc + s] = num;chessBoard(tr,tc + s,tr + s - 1,tc + s,s);}//左下if (dr >= tr + s && dc < tc + s) {chessBoard(tr + s,tc,dr,dc,s);} else {board[tr + s][tc + s - 1] = num;chessBoard(tr + s,tc,tr + s,tc + s - 1,s);}//右下if (dr >= tr + s && dc >= tc + s) {chessBoard(tr + s,tc + s,dr,dc,s);} else {board[tr + s][tc + s] = num;chessBoard(tr + s,tc + s,tr + s,tc + s,s);}}}

输出结果:

每种数字代表一种颜色;由图知符合题意;

棋盘覆盖 (详细图解)相关推荐

  1. centos7安装详细图解_5G基站工程安装详细图解(纯干货)

    5G基站是5G网络的核心设备,提供无线覆盖,实现有线通信网络与无线终端之间的无线信号传输.基站的架构.形态直接影响5G网络如何部署.今天小编给大家介绍一下基站的内部结构以及安装的详细图解. 这样复杂的 ...

  2. PowerDesigner 15.1 安装步骤详细图解及破解

    准备工作: 下载 PowerDesigner 15.1 的安装文件和破解文件 PowerDesigner 15.1 下载地址:http://download.sybase.com/eval/Power ...

  3. 算法系列(一):分治策略--棋盘覆盖

    算法系列(一):分治策略--棋盘覆盖 一.分析 问题描述:  图1-1 k=2时的一个特殊棋盘 在一个 2^k * 2^k 个方格组成的棋盘中,若恰有一个方格与其它方格不同,则称该方格为一特殊方格,且 ...

  4. 棋盘覆盖问题(保姆级解释)

    这可是保姆级解释哦! 1.问题描述: 在一个个方格组成的棋盘中,恰有一个方格与其他方格不同,称该方格为特殊方格.棋盘覆盖问题要求用如图所示的4种不同形状的L型骨牌覆盖给定棋盘上除特殊方格以外的所有方格 ...

  5. Android环境变量的设置(详细图解版)

    Android环境变量的设置(详细图解版) 转载于:https://www.cnblogs.com/zhujiabin/p/4875182.html

  6. 递归与分治之棋盘覆盖问题

    在一个2^k * 2^k个方格组成的棋盘中,若有一个方格与其他方格不同,则称该方格为一特殊方格,且称该棋盘为一个特殊棋盘. 显然特殊方格在棋盘上出现的位置有4^k种情形.因而对任何k≥0,有4^k种不 ...

  7. 计算机基础算法棋盘覆盖,分治算法求解棋盘覆盖问题互动教学过程.doc

    分治算法求解棋盘覆盖问题互动教学过程 分治算法求解棋盘覆盖问题互动教学过程 摘要:针对算法设计与分析课程难度较大.对学生编程能力要求较高的现状,通过对棋盘覆盖问题的分治算法求解过程进行互动教学设计,引 ...

  8. linux安装教程6.3,CentOS 6.3安装教程(详细图解)

    说明: 1.CentOS 6.3系统镜像有两个,安装系统只用到第一个镜像即CentOS-6.3-i386-bin-DVD1.iso(32位)或者CentOS-6.3-x86_64-bin-DVD1.i ...

  9. NYOJ 45 棋盘覆盖

    以为是分治法那个经典的例子,一看题才知道是大数 棋盘覆盖 时间限制:3000 ms  |  内存限制:65535 KB 难度:3 描述 在一个2k×2k(1<=k<=100)的棋盘中恰有一 ...

最新文章

  1. python语句x 3 3执行_Python语言中,x=2,y=3,执行x,y=y,x之后,x和y的值分别是什么?...
  2. 《javascript高级程序设计》笔记:Function类型
  3. jclouds_使用jclouds在S3上分段上传
  4. java.util.IdentityHashMap.entrySet()方法实例
  5. 7-3 DAG图优化-A (15 分)(更新版)
  6. Angular进阶教程一
  7. 分位数回归的R语言实现
  8. vscode c++ 开发环境搭建(离线、内网)
  9. 51单片机(1)-开发工具介绍及软件安装
  10. 排列图 - QCC小组活动推行知识系列介绍(三)
  11. ssd存储的SLC、MLC、TLC闪存芯片颗粒有什么区别?
  12. 品牌如何赋能加盟商,攻克时艰
  13. 绿色数据中心空调设计 书评_书评:PHP中的实用设计模式
  14. 思岚科技即将亮相2019上交会 展示机器人自主行走背后的技术
  15. 秒杀项目05-页面优化技术
  16. golang 读一行_与golang合作的第一步
  17. perl-dbd-mysql qt_perl 安装DBI和DBD
  18. 开源物联网平台推荐介绍
  19. Python 爬虫进阶篇——Selenium教程(一)
  20. 操作系统---栈区与堆区 转自:https://blog.csdn.net/amcp9/article/details/79597481

热门文章

  1. linux下编译stc15f104w的坑
  2. 弹弹堂之 弹坑技术
  3. 技术团队管理要求 网文节选要点,内部培训用
  4. 联想微型计算机怎么使用,lenovo电脑如何使用U盘引导教程(适用于一体机及台式机)...
  5. 华为服务器查看阵列信息,服务器查看磁盘阵列
  6. golang 管道_必须具有用于golang构建管道的工具
  7. python输入二维数组_用Python生成二维数组的置换矩阵
  8. 【vue】钩子函数和回调函数的区别
  9. node 部署本地服务器
  10. Java中的序列化到底是什么