public class ChessBoard
{
int tile = 1;
int k = 16;
int[][] Board = new int[16][16];
public void ChessBoard(int tr,int tc,int dr,int dc,int size)
{
if(size == 1) return;
int t = tile++;
System.out.println(t);
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] = t;
ChessBoard(tr,tc,tr+s-1,tc+s-1,s);
}
if(dr >= tr+s && dc<tc+s) //如果特别点在左下角
{
ChessBoard(tr+s,tc,dr,dc,s);
}
else
{
Board[tr+s][tc+s-1] = t;
ChessBoard(tr+s,tc,tr+s,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] = t;
ChessBoard(tr,tc+s,tr+s-1,tc+s,s);
}
if(dr >= tr+s && dc >= tc+s)//如果特别点在右下角
{
ChessBoard(tr+s,tc+s,dr,dc,s);
}
else
{
Board[tr+s][tc+s] = t;
ChessBoard(tr+s,tc+s,tr+s,tc+s,s);
}
}
public void printA()
{
for(int i = 0 ; i<k;i++)
{
for(int j = 0;j<k;j++)
{
System.out.print(" "+Board[i][j]);
if(j==15)System.out.println('\t');
}
}
}
public static void main(String args[])
{
ChessBoard cb = new ChessBoard();
cb.ChessBoard(0,0,0,0,16);
cb.printA();
}
}
在一个2k x 2k ( 即:2^k x 2^k )个方格组成的棋盘中,恰有一个方格与其他方格不同,称该方格为一特殊方格,且称该棋盘为一特殊棋盘。在棋盘覆盖问题中,要用图示的4种不同形态的L型骨牌覆盖给定的特殊棋盘上除特殊方格以外的所有方格,且任何2个L型骨牌不得重叠覆盖。
分享到:
相关推荐
在本文中,我们将深入探讨如何使用Microsoft Foundation Class (MFC) 库来实现一个界面,以演示通过分治法解决棋盘覆盖问题。MFC 是 Microsoft 提供的一个C++类库,它为开发者提供了一种构建Windows应用程序的框架,...
在本文中,我们将深入探讨如何使用Python来实现棋盘覆盖的动态可视化。棋盘覆盖问题是一个经典的数学问题,它涉及到如何有效地用特定形状的棋子(通常为L形的 trominoes)覆盖一个二维棋盘,使得每个格子被且仅被一...
### 棋盘覆盖问题与算法设计 #### 一、问题背景及定义 **棋盘覆盖问题**是指:给定一个大小为 \(2^n \times 2^n\) 的棋盘,其中有一个单元格被挖掉(称为缺陷单元),要求用L型骨牌(即由3个相连的单元格组成的...
**算法设计与分析——棋盘覆盖问题的分治法求解** 在计算机科学中,算法设计与分析是核心部分,它涉及到如何有效地解决问题并优化计算效率。本篇将重点探讨如何利用分治策略来解决棋盘覆盖问题。棋盘覆盖问题是一个...
棋盘覆盖问题是一个经典的计算机科学问题,源自数学中的八皇后问题。它涉及到在8×8的棋盘上放置八个皇后,使得任何两个皇后都不能在同一行、同一列或同一对角线上。这个问题通常用来演示和练习分治算法,因为它可以...
在IT领域,棋盘覆盖问题是一个经典的算法问题,通常用于探讨和解决计算机科学中的路径规划、资源分配等问题。而“棋盘覆盖 可视化 MFC”则涉及到使用Microsoft Foundation Classes (MFC)库来创建一个图形用户界面,...
### 棋盘覆盖问题实现 #### 一、问题背景及定义 棋盘覆盖问题是一个经典的计算机科学问题,它涉及到如何用特定形状的瓷砖(通常为L形三块方格的瓷砖)覆盖一个缺失了一个方格的大棋盘。具体而言,假设有一个\(2^n ...
《棋盘覆盖问题》 棋盘覆盖问题是一个典型的算法设计问题,源于计算机科学中的组合优化领域,具有重要的理论和实际意义。在这个问题中,我们面对的是一个2^k * 2^k的棋盘,其中有一个特殊的方格,目标是用四种不同...
棋盘覆盖算法是一种经典的计算机科学问题,它源于数学和图论,被广泛应用于解决资源分配、网络优化等问题。在这个“棋盘覆盖算法演示程序”中,我们可以通过代码和实例来深入理解这一算法。 棋盘覆盖问题通常以一个...
Java基于分治算法实现的棋盘覆盖问题示例 本文主要介绍了Java基于分治算法实现的棋盘覆盖问题,简单描述了棋盘覆盖问题,并结合具体实例形式分析了Java基于分治算法实现棋盘覆盖问题的相关操作技巧。 知识点一:...
棋盘覆盖问题是一种经典的组合优化问题,源自于数学和计算机科学。在八皇后问题的基础上,它探讨了如何有效地放置一定数量的棋子(通常为皇后)在棋盘上,使得任何两个棋子都不会在同一行、同一列或同一斜线上。这个...
棋盘覆盖问题是一种经典的组合优化问题,它在计算机科学、图论和算法设计等领域具有重要的理论价值和实际应用。在本实例中,我们关注的是一个16x16的棋盘,目标是用不同颜色的“棋子”来覆盖整个棋盘,确保每个格子...
### C语言实现棋盘覆盖问题解析 #### 一、背景介绍 棋盘覆盖问题是一个经典的计算机科学问题,它涉及到如何用特定形状的多米诺骨牌(或L型骨牌)来覆盖一个有缺陷的棋盘。在这个问题中,一个标准的\(2^n \times 2^n...
"经典棋盘覆盖问题"是一个在计算机科学和数学领域中被广泛研究的理论问题,尤其在算法设计和分析中占有重要地位。这个问题涉及到如何有效地用最少的棋子(通常是皇后或马)覆盖一个给定大小的棋盘,使得棋子之间不能...
标题中的“棋盘覆盖”指的是一个经典的数学问题,通常与计算机科学中的算法设计和分析相关。在编程领域,解决棋盘覆盖问题可以用于理解和实践如何有效地处理组合优化问题。MFC,全称Microsoft Foundation Classes,...
棋盘覆盖问题是一个经典的计算机科学问题,主要涉及算法设计与分析。在数学和计算机科学中,棋盘覆盖问题通常指的是如何用最小数量的棋子(或者其他形状的元素)完全覆盖一个给定的棋盘,例如8x8的国际象棋棋盘。这...
在编程领域,棋盘覆盖问题是一个经典的算法问题,它与计算机科学中的搜索算法和图论密切相关。本项目通过VC6.0环境,结合MFC(Microsoft Foundation Classes)库,运用二分法来解决棋盘覆盖问题,提供了一个直观且...
### 棋盘覆盖算法详解 #### 一、引言 在计算机科学与技术领域,算法是解决问题的核心工具之一。其中,“棋盘覆盖”问题是一个经典的递归算法案例,广泛应用于算法课程的教学之中。本文将从给定的“棋盘覆盖的代码...
在计算机科学领域,棋盘覆盖问题是一个经典的算法问题,它源于数学和图论。这个问题涉及到在8x8的国际象棋棋盘上放置棋子,使得每行、每列都至少有一个棋子,但不能有两个棋子相邻。这个问题在算法设计与分析中具有...