2

我目前正在Java使用 Swing/Awt 编写图形数独求解程序。所以我决定我想像这些盒子(用 3x3 和 2x3 盒子)一样遮蔽板上的盒子(用粗线标记):(来源:zitowolf.net


(来源:zitowolf.net


一个 6x6 板和一个 8x8 板

程序中的板基本上表示为一个int[dimension][dimension]数组,程序接受尺寸为 4x4 -> 16x16 的板。

问题是要确保在一行或一列中没有相邻的框具有相同的阴影。GUI 着色过程本身不是问题,而是找出一个正方形是否应该作为阴影框的一部分进行着色。

我已经尝试了几个小时来实现一个简单的算法来解决这个问题,通过双 for 循环遍历数组,但我还没有得到任何合理的模式,而且我没有想法。到目前为止,我的算法是基于这样的假设,即每个其他框都应该从左上角到右下角着色。这不适用于 6x6 变体,因为您有以下顺序:彩色框->白框->白框。

这里有人可以提出算法或其他方法吗?如果需要,我会提供更多信息。非常感激。

4

1 回答 1

2
bool should_shade(x,y,size_x,size_y) 
//sizes are size of small box and position x,y count from 0
{
     return ( (x/size_x + y/size_y ) % 2) == 0; //division is integer division

}
于 2012-04-17T15:04:24.597 回答