【发布时间】:2011-05-29 02:28:59
【问题描述】:
我哪里出错了?这似乎不起作用。我试图在参数中指定一个 i 和 j 来定位单元格。并返回 9 x 9 数独网格中的可能值。 如果单元格为空,则第一个数组即 a[0]= true 和正在播放或占用的单元格则为 false。 数组的其余部分由值组成,这些值是可以插入到 i 和 j 单元格的可能值。因此一个可能的值是 4 那么它将返回 a[4]= true 并且布尔数组的其余部分是可能的。谁能告诉我哪里出错了? while循环不正确吗?
public boolean[] getPossible( int i, int j)
{
final int booArraySize = 10;
boolean[] possibleArray = new boolean[booArraySize];
int zero = 0;
if ( game[i][j] == 0)
{
for( int b=1; b < possibleArray.length; b++)
{
possibleArray[b] = true;
}
int row=i;
int col= 0;
int[] copyy = new int[GRID_SIZE];
for( int m = 0; m < copyy.length; m++)
{
copyy[m] = 1;
}
while ( (copyy[0] < 10) && (copyy[0] >0))
{
for ( int q= col+1; q < game.length; q++)
{
if( copyy[0] == game[row][q])
{
possibleArray[q] = false;
}
else
{
possibleArray[q] = possibleArray[q];
}
}
copyy[0] = copyy[0] + 1;
}
possibleArray[0]= true;
}
return possibleArray;
}
【问题讨论】:
-
游戏数据结构代表什么?
-
颂歌中的第一个奇怪的事情是您总是使用
copyy[0],而从未使用该数组的任何其他元素。第二件事是,只要同一列中的单元格不包含copyy[0],possibleArray[q]就会设置为 true,因此基本上,除非该列中的 每个 单元格为 4,否则 4 是可能的。 -
我假设
game是数独板的二维数组,包含单元格中的数字,0 表示空白。 -
是的,但我在末尾将 copy[0] 元素加一,这样它就可以检查从 1 到 9 的所有值,而不是零。
-
那么现在的“错误”是什么:您是否明白所有数字都是可能的,即使有些数字不是?
标签: java arrays boolean sudoku