棋盘覆盖问题抓住两点即可:
1.我们将一个大棋盘C分为四块,C的左上角是坐标是(0,0)
这个左上角坐标是用来区分在哪一个小棋盘的,抓住这个左上角的坐标变化
2.我们需要将没有特殊数字的其他三块继续分治,但是他没有特殊数字,
如果在第一象限,则将右下作为特殊
如果在第二象限,则将左下作为特殊
如果在第三象限,则将右上作为特殊
如果在第四象限,则将左上作为特殊

抓住这两点,问题则迎刃而解
代码:


import java.util.Scanner;public class ChessBoard {
/** 题目描述:在一个n×n (n = 2k)个方格组成的棋盘中,恰有一个方格与其他方格不同,称该方格为一特殊方格,且称该棋盘为一特殊棋盘。 在棋盘覆盖问题中,要用图示的4种不同形态的L型骨牌覆盖给定的特殊棋盘上除特殊方格以外的所有方格,且任何2个L型骨牌不得重叠覆盖。 *//**
输入
多组测试用例,每组测试用例包括两部分, 第一部分为方格的宽度n, 第二部分则为方格,特殊方格为-1,其他方格为0。 */static int number=1;public static void main(String[] args) {Scanner sc=new Scanner(System.in);int n=sc.nextInt();int array[][]=new int[n][n];int dr=0;int dc=0;for(int i=0;i<n;i++) {for(int j=0;j<n;j++) {array[i][j]=sc.nextInt();if(array[i][j]==-1) {dr=i;//将特殊数字的坐标传给函数dc=j;}}}chessboard(0,0,dr,dc,n,array);//默认左上角是0,0,-1是特殊数字for(int i=0;i<n;i++) {for(int j=0;j<n;j++) {System.out.print(array[i][j]+" ");}System.out.println();}}private static void chessboard(int i, int j, int dr, int dc, int n, int[][] array) {// TODO Auto-generated method stubif(n==1) {return;//如果只有一个数,就返回}int halfsize=n/2;int t=number++;//这个时候number等于1;做完这一步才变成2;if(dr<i+halfsize&&dc<j+halfsize) {chessboard(i,j,dr,dc,halfsize,array);}else {array[i+halfsize-1][j+halfsize-1]=t;chessboard(i,j,i+halfsize-1,j+halfsize-1,halfsize,array);}if(dr<i+halfsize&&dc>=j+halfsize) {chessboard(i,j+halfsize,dr,dc,halfsize,array);}else {array[i+halfsize-1][j+halfsize]=t;chessboard(i,j+halfsize,i+halfsize-1,j+halfsize,halfsize,array);}if(dr>=i+halfsize&&dc<j+halfsize) {chessboard(i+halfsize,j,dr,dc,halfsize,array);}else {array[i+halfsize][j+halfsize-1]=t;chessboard(i+halfsize,j,i+halfsize,j+halfsize-1,halfsize,array);}if(dr>=i+halfsize&&dc>=j+halfsize) {chessboard(i+halfsize,j+halfsize,dr,dc,halfsize,array);}else {array[i+halfsize][j+halfsize]=t;chessboard(i+halfsize,j+halfsize,i+halfsize,j+halfsize,halfsize,array);}
}}

【Java】棋盘覆盖问题相关推荐

  1. java实现棋盘覆盖算法,java 棋盘覆盖算法

    import java.util.Scanner; /** 棋盘覆盖 */ public class Arithmetic { /** 被覆盖后显示的数字,会根据覆盖的顺序有所递增 */ privat ...

  2. java棋盘覆盖_棋盘覆盖问题实现

    [实例简介] 实现棋盘覆盖问题 [实例截图] [核心代码] public static void chessBoard(int dr, int dc, int tr, int tc, int size ...

  3. java棋盘覆盖分治法,棋盘覆盖-分治法

    信 息 工 程 学 院 算法分析 实习报告 学院:信息工程学院 班级:软件工程083 姓名: 学号: 成绩: 一.实习题目 : 棋盘覆盖 二.实习过程 : 1.了解分治法的思想: 将一个难以解决的大问 ...

  4. java棋盘覆盖分治法_【单选题】实现棋盘覆盖算法利用的算法是( ) A. 分治法 B. 动态规划法 C. 贪心法 D. 回溯法...

    1毫居里(1mCi)=()Bq.A.3.7×107B.3.7×108C.3.7×109D.3.7×1010 为了尽可能提高反应堆的总输出功率,就需要进行功率展平,功率展平主要措施有().A.燃料元件分 ...

  5. JAVA大数_棋盘覆盖

    第一道: 传送门:NYOJ 45 棋盘覆盖 2^k*2^k=4^k,其实就是大数计算,-1后取3的倍数.问题本源出自<计算机算法设计与分析>的棋盘覆盖问题,原始解法是分治法,递推出公式f( ...

  6. java棋盘问题_0x03大数问题(JAVA解决棋盘覆盖,A+B Problem II)

    常见的有棋盘覆盖和A+B问题,这类问题牵扯到的数值都比较大,如果用一般的数值类型,肯定输出不了,所以就要想一个办法,怎么把大数转换一下输出. A+B Problem II 时间限制:3000 ms | ...

  7. 棋盘覆盖(java实现)

    6.2 棋盘覆盖 1.问题描述 在一个2k×2k 个方格组成的棋盘中,恰有一个方格与其它方格不同,称该方格为一特殊方格,且称该棋盘为一特殊棋盘.在棋盘覆盖问题中,要用图示的4种不同形态的L型骨牌覆盖给 ...

  8. 棋盘覆盖算法java_棋盘覆盖问题(算法分析)(Java版)

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

  9. 棋盘覆盖(Java)

    棋盘覆盖(Java) 一.问题描述 在一个 2^k * 2^k 方格组成的棋盘中,若恰有一个方格与其它方格不同,则称该方格为一个特殊方格,且称该棋盘为一个特殊棋盘.用4种不同形态的L型骨牌覆盖一个给定 ...

最新文章

  1. 调查报告:工人们并不担心将来会被AI取代
  2. 【综述专栏】自动驾驶中可解释AI的综述和未来研究方向
  3. Windows Socket 最大连接数
  4. 如何快速转化PSD为UI界面?
  5. Redis两种客户端:lettuce和Jedis的区别
  6. php报表数据打印机,通过打印机打印带打印功能的php表
  7. 区块链技术的发展现状_区块链的现状及其发展趋势
  8. Spark 学习(十一) spark使用hive的元数据信息
  9. 力扣78. 子集(JavaScript)
  10. HDU 6184 2017广西邀请赛:Counting Stars(三元环)
  11. java 到异常_java编程中遇到的异常以及异常的一些处理
  12. ios刻录软件_好用免费的剪辑软件神器可以剪辑、导出,让大家都变成为大师级!...
  13. GAMBIT、ICEM、HYPERMESH耦合面的处理方法
  14. 网易云音乐(纯CSS实战)
  15. php gethostbyname ipv6,支持IPV6方法
  16. 计算机应用基础教育教学工作总结,计算机应用基础教学工作总结
  17. [转] 教师的备课主要解决哪些问题?
  18. Is necessary to close fille in python?
  19. 荣耀v40轻奢版和华为nova8的区别 哪个好
  20. 初中高中生用计算机,中学生如何科学的使用计算器?

热门文章

  1. 手机php开发工具_最热门的PHP开发工具
  2. 你用了多长时间存了10万块钱?
  3. js实现谷歌网站统计
  4. 尚医通 (二) --------- MyBatis Plus 详解
  5. windows7下的iis配置asp.net本地网站
  6. mmdetection的安装并训练自己的VOC数据集
  7. 2022年全球市场铋基高温超导体总体规模、主要生产商、主要地区、产品和应用细分研究报告
  8. 图解Word2vec,读这一篇就够了!
  9. 用Faiss实现一个人脸检索
  10. PAT A1062 Talent and Virtue