我目前正在Java
使用 Swing/Awt 编写图形数独求解程序。所以我决定我想像这些盒子(用 3x3 和 2x3 盒子)一样遮蔽板上的盒子(用粗线标记):(来源:zitowolf.net)
(来源:zitowolf.net)
一个 6x6 板和一个 8x8 板
程序中的板基本上表示为一个int[dimension][dimension]
数组,程序接受尺寸为 4x4 -> 16x16 的板。
问题是要确保在一行或一列中没有相邻的框具有相同的阴影。GUI 着色过程本身不是问题,而是找出一个正方形是否应该作为阴影框的一部分进行着色。
我已经尝试了几个小时来实现一个简单的算法来解决这个问题,通过双 for 循环遍历数组,但我还没有得到任何合理的模式,而且我没有想法。到目前为止,我的算法是基于这样的假设,即每个其他框都应该从左上角到右下角着色。这不适用于 6x6 变体,因为您有以下顺序:彩色框->白框->白框。
这里有人可以提出算法或其他方法吗?如果需要,我会提供更多信息。非常感激。