首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

棋盘覆盖问题(Java

棋盘覆盖问题(Java) 1、问题描述 2、算法设计思路 3、代码实现 4、复杂度分析 5、参考 ---- ---- 1、问题描述 在一个2k×2k个方格组成的棋盘中,若恰有一个方格与其他方格不同,...则称该方格为一特殊方格,且称该棋盘为一个特殊棋盘。...显然特殊方格在棋盘上出现的位置有4k 种情形.因而对任何k ≥ 0,有4k种不同的特殊棋盘。如下图中的特殊棋盘是当k = 2时16个特殊棋盘中的一个。...3、代码实现 ❝特殊棋盘我们采用0来表示,同时假设特殊方格的位置为第三行第三列 ❞ 棋盘一分为四之后,依次覆盖左上角子棋盘、右上角子棋盘、左下角子棋盘、右下角子棋盘。...如若特殊方格在子棋盘中,则递归执行该子棋盘的操作;若不在,对于左上角子棋盘、右上角子棋盘、左下角子棋盘、右下角子棋盘而言,用编号为t的L型骨牌依次覆盖右下角、左下角、右上角、左上角的方格。

71920

java 实现棋盘覆盖问题

问题描述:在一个2k*2k的棋盘中,有一个特殊方格,要求用L型骨牌覆盖满除特殊方格外的所有其他方格,且骨牌不得重叠....所以将2k*2k的棋盘,先分成相等的四块子棋盘,其中特殊方格位于四个中的一个,构造剩下没特殊方格三个子棋盘:将一块骨牌放在这三个小棋盘的交界处,使骨牌的每一个方格都作为三个小棋盘的特殊方格,骨牌具体放法如下...: 左上的子棋盘若不存在特殊方格,将该子棋盘右下角的那个方格覆盖为特殊方格 右上的子棋盘若不存在特殊方格,将该子棋盘左下角的那个方格覆盖为特殊方格 左下的子棋盘若不存在特殊方格,将该子棋盘右上角的那个方格覆盖为特殊方格...右下的子棋盘若不存在特殊方格,将该子棋盘左上角的那个方格覆盖为特殊方格 至此,每个小棋盘都有一个特殊方格,然后递归调用,就可以解决问题了。...由于覆盖2k*2k的棋盘所需的骨牌个数为(4k-1)/3,所以此算法是一个渐进意义下最优算法。

1.8K110
您找到你想要的搜索结果了吗?
是的
没有找到

分治(详解残缺棋盘 —— Java代码实现)

,yk) // 将各子问题的解合并为原问题的解 } } 案例 覆盖残缺棋盘 在一个2k×2k 个方格组成的棋盘中,恰有一个方格与其他方格不同,称该方格为一特殊方格,且称该棋盘为一特殊棋盘。...其中一个是 4 × 4 缺陷棋盘 [hipg0igymd.png] 在其他三个 4 × 4 棋盘都都相邻的拐角上放一个三格板,使它们也成为缺陷棋盘 递归地覆盖四个4×4缺陷棋盘 在其它三个 4 × 4...棋盘都相邻的拐角上放一个三格板,使它们也成为缺陷棋盘。...[q034wbjx6y.jpeg] Java代码实现 package Chess; public class Chess { // 表示棋盘 private int[][] board; //...* @param tc:棋盘左上角方格的列号 * @param dr:特殊方格所在的行号 * @param dc:特殊棋盘所在的列号 * @param size:2^k, 棋盘的规格为

779107

棋盘分割

作者 | 小K 出品 | 公众号:小K算法 01 故事起源 有一个8*8的棋盘,沿着格子的边进行分割,每分割一块拿走,将剩下的矩形棋盘继续分割。 n-1次分割后,可以得到n块矩形棋盘。...假设原棋盘每一格都有一个分值,则分割后的每一块都有一个总分,总分即为所有格子分值之和。 设分割的每一块棋盘总分为xi。 如何分割可以让各矩形棋盘总分的均方差最小?...例如一个4*4的棋盘,先垂直切,就可以从3个不同的位置切。 如果给棋盘加一个坐标,每一种切法就可以用一个线段来具体表示,比如用这条切线的两个端点坐标。...分割之后,就变成了2个更小的棋盘,而这2个棋盘也可以用矩形的坐标表示,此时就把原问题变成了子问题,原问题的最优解也就是所有子问题中选一个最优的。...初始化的时候,所有小块的独立矩形棋盘都一次不切,所以就是矩形棋盘的分值平方。

59220

【题解】棋盘

[NOIP2017 普及组] 棋盘 题目背景 NOIP2017 普及组 T3 题目描述 有一个m×mm \times mm×m的棋盘棋盘上每一个格子可能是红色、黄色或没有任何颜色的。...你现在要从棋盘的最左上角走到棋盘的最右下角。 任何一个时刻,你所站在的位置必须是有颜色的(不能是无色的), 你只能向上、 下、左、 右四个方向前进。...现在你要从棋盘的最左上角,走到棋盘的最右下角,求花费的最少金币是多少? 输入格式 第一行包含两个正整数m,nm, nm,n,以一个空格分开,分别代表棋盘的大小,棋盘上有颜色的格子的数量。...棋盘左上角的坐标为(1,1)(1, 1)(1,1),右下角的坐标为(m,m)(m, m)(m,m)。 棋盘上其余的格子都是无色。...保证棋盘的左上角,也就是(1,1)(1, 1)(1,1) 一定是有颜色的。 输出格式 一个整数,表示花费的金币的最小值,如果无法到达,输出−1-1−1。

1.5K20

棋盘覆盖问题

Tags: 算法 棋盘覆盖问题 ---- 【问题描述】 在一个2^k×2^k个方格组成的棋盘中,若有一个方格与其他方格不同,则称该方格为一特殊方格,且称该棋盘为一个特殊棋盘.显然特殊方格在棋盘上出现的位置有...四个子棋盘 特殊方格必位于 4 个较小子棋盘之一中,其余 3 个子棋盘中无特殊方格。...为了在递归处理的过程中使用同一个棋盘,将数组board设为全局变量; (2)子棋盘:整个棋盘用二维数组board[size][size]表示,其中的子棋盘棋盘左上角的下标tr、tc和棋盘大小s表示;...<<endl; } cout<<endl; } int main() { test(); return 0; } 【JAVA...此类的源代码如下: package com.qipan.test; import java.awt.Color; import java.awt.GridLayout; import java.util.Random

3.1K100

棋盘覆盖问题(转载)

问题描述 在一个2^k×2^k 个方格组成的棋盘中,恰有一个方格与其他方格不同,称该方格为一特殊方格,且称该棋盘为一特殊棋盘。...在棋盘覆盖问题中,要用图示的4种不同形态的L型骨牌覆盖给定的特殊棋盘上除特殊方格以外的所有方格,且任何2个L型骨牌不得重叠覆盖。 ? ?...解题思路 分析:当k>0时,将2k×2k棋盘分割为4个2^k-1×2^k-1 子棋盘(a)所示。特殊方格必位于4个较小子棋盘之一中,其余3个子棋盘中无特殊方格。...为了将这3个无特殊方格的子棋盘转化为特殊棋盘,可以用一个L型骨牌覆盖这3个较小棋盘的会合处,如 (b)所示,从而将原问题转化为4个较小规模的棋盘覆盖问题。递归地使用这种分割,直至棋盘简化为棋盘1×1。

50110

P1169 棋盘制作

据说国际象棋起源于易经的思想,棋盘是一个8*8大小的黑白相间的方阵,对应八八六十四卦,黑白对应阴阳。 而我们的主人公小Q,正是国际象棋的狂热爱好者。...作为一个顶尖高手,他已不满足于普通的棋盘与规则,于是他跟他的好朋友小W决定将棋盘扩大以适应他们的新规则。 小Q找到了一张由N*M个正方形的格子组成的矩形纸片,每个格子被涂有黑白两种颜色之一。...小Q想在这种纸中裁减一部分作为新棋盘,当然,他希望这个棋盘尽可能的大。...不过小Q还没有决定是找一个正方形的棋盘还是一个矩形的棋盘(当然,不管哪种,棋盘必须都黑白相间,即相邻的格子不同色),所以他希望可以找到最大的正方形棋盘面积和最大的矩形棋盘面积,从而决定哪个更好一些。...第一行为可以找到的最大正方形棋盘的面积,第二行为可以找到的最大矩形棋盘的面积(注意正方形和矩形是可以相交或者包含的)。

1K80

马踏棋盘 - plus studio

当循环结束后,solve_knight_tour函数就完成了马踏棋盘问题的求解,棋盘上每个格子的访问顺序已经被记录在board数组中。...请注意,该算法并不能保证一定能找到马踏棋盘问题的解,因为在某些起始位置和棋盘大小的情况下,可能无法找到完整的遍历路径。 度数在这里代表什么?...这种策略在一定程度上增加了找到马踏棋盘问题解的概率。 马踏棋盘问题中,度数最小的位置是否一定是下一步移动的最佳选择? 在马踏棋盘问题中,度数最小的位置不一定是下一步移动的最佳选择。...这些算法可以考虑更多的因素,如节点的可达性、棋盘上的局部结构、路径的延伸性等,以更有效地搜索解空间并找到更优的解。...因此,在解决马踏棋盘问题时,度数最小的位置可以作为一种启发式指导,但不能保证一定是下一步移动的最佳选择,需要结合其他算法和策略来综合评估和确定下一步的移动位置。

7410

P1169「棋盘制作」

小 Q 想在这种纸中裁减一部分作为新棋盘,当然,他希望这个棋盘尽可能的大。...不过小 Q 还没有决定是找一个正方形的棋盘还是一个矩形的棋盘(当然,不管哪种,棋盘必须都黑白相间,即相邻的格子不同色),所以他希望可以找到最大的正方形棋盘面积和最大的矩形棋盘面积,从而决定哪个更好一些。...第一行为可以找到的最大正方形棋盘的面积,第二行为可以找到的最大矩形棋盘的面积(注意正方形和矩形是可以相交或者包含的)。...于是我们可以对整个棋盘扫描两次,第一次假设符合要求的棋盘为第一种情况,则: 对符合第一种情况的黑白块块标记为 1 。 对不符合第一种情况的黑白块块标记为 0 。...如果 时,说明对于第 行来说,列 不满足以列 结尾形成的棋盘要求,此时棋盘已经割裂,即 以后的所有列都无法与 前面的列组合成合理的棋盘,于是将栈弹空,并修改栈顶的矩形边界为

57630

POJ - 1321 棋盘问题

在一个给定形状的棋盘(形状可能是不规则的)上面摆放棋子,棋子没有区别。...要求摆放时任意的两个棋子不能放在棋盘中的同一行或者同一列,请编程求解对于给定形状和大小的棋盘,摆放k个棋子的所有可行的摆放方案C。 Input 输入含有多组测试数据。 ...每组数据的第一行是两个正整数,n k,用一个空格隔开,表示了将在一个n*n的矩阵内描述棋盘,以及摆放棋子的数目。 n <= 8 , k <= n  当为-1 -1时表示输入结束。 ...随后的n行描述了棋盘的形状:每行有n个字符,其中 # 表示棋盘区域, . 表示空白区域(数据保证不出现多余的空白行或者空白列)。 ...2 1 #. .# 4 4 ...# ..#. .#.. #... -1 -1 Sample Output 2 1 这个题就是一个简化版的N皇后问题,问的是有哪些情况,所以深搜,题意是说给你N*N的棋盘

39920
领券