数独回溯方法
int xx = (pos.getX() / 3) * 3;
int yy = (pos.getY() / 3) * 3;
for (int y = 0; y < 3; y++) {
for (int x = 0; x < 3; x++) {
if ((xx + x != pos.getX()) && (yy + y != pos.getY())) {
possible[work[xx + x][yy + y]] = false; 其中x和y=
private byte x;
private byte y;有人能解释一下为什么我们要除以3再乘以3吗?
(pos.getY() / 3) * 3;
(pos.getX() / 3) * 3;发布于 2012-05-22 18:09:55
除法是整数除法,因此它将删除余数。执行整数除法,然后进行乘法运算,将得到正确3x3块的第一个单元格索引。
例如。
pos 0 1 2 3 4 5 6 7 8
/3 0 0 0 1 1 1 2 2 2
*3 0 0 0 3 3 3 6 6 6发布于 2012-05-22 17:52:28
因为我们想要3的倍数,我们想要小于pos.getX()的3的最大倍数。它对应于当前3x3正方形中的左上角单元格。
请记住,X/3必须是整数,因此( X /3)*3可能不等于X。
https://stackoverflow.com/questions/10699627
复制相似问题