Java 数独板上方框的着色算法
我目前正在使用Swing/Awt在Java 数独板上方框的着色算法,java,algorithm,multidimensional-array,sudoku,Java,Algorithm,Multidimensional Array,Sudoku,我目前正在使用Swing/Awt在Java中编写一个图形数独解算程序。因此,我决定在电路板上给这些盒子(用粗线标记)加上阴影(用3x3和2x3盒子): (来源:) (来源:) 一块6x6板和一块8x8板 程序中的板基本上表示为int[dimension][dimension]数组,程序接受尺寸为4x4->16x16的板 问题在于确保行或列中相邻的框没有相同的着色。GUI着色过程本身不是问题所在,而是找出是否应将正方形作为着色框的一部分进行着色。 我已经尝试了几个小时来实现一个简单的算法来解
Java
中编写一个图形数独解算程序。因此,我决定在电路板上给这些盒子(用粗线标记)加上阴影(用3x3和2x3盒子):(来源:)
(来源:)
一块6x6板和一块8x8板 程序中的板基本上表示为
int[dimension][dimension]
数组,程序接受尺寸为4x4->16x16的板
问题在于确保行或列中相邻的框没有相同的着色。GUI着色过程本身不是问题所在,而是找出是否应将正方形作为着色框的一部分进行着色。
我已经尝试了几个小时来实现一个简单的算法来解决这个问题,通过一个双for循环遍历数组,但是我还没有得到任何合理的模式,我也没有想法。到目前为止,我的算法是基于这样一个假设,即每隔一个框都应该从左上到右下着色。这对6x6变型不起作用,因为这里有顺序:彩色框->白色框->白色框
这里有人能提出一种算法或其他方法吗?如果需要,我会提供更多信息。非常感谢。我将如何在
Java
中重写此返回语句?编译器生成:。。。操作人员无法应用于int…
。这非常有效!只是,我将部分更改为x/size\u y
和y/size\u x
,以使其与应该阴影(I,j,boxWidth,boxHeight)
一起工作,其中boxWidth
是框中的列数和boxHeight
行数。我不知道为什么这个算法有效,但它太棒了@hesse它之所以有效,是因为如果将x/size\u x
(即此正方形所在框的x索引)增加1,它会改变颜色;如果将y/size\u y
增加1,它也会改变颜色。这肯定会满足你的要求,没有两个相邻的盒子有相同的颜色。
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
}