首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >数独,回溯算法

数独,回溯算法
EN

Stack Overflow用户
提问于 2012-05-22 17:50:53
回答 2查看 730关注 0票数 2

数独回溯方法

代码语言:javascript
复制
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=

代码语言:javascript
复制
private byte x;
private byte y;

有人能解释一下为什么我们要除以3再乘以3吗?

代码语言:javascript
复制
(pos.getY() / 3) * 3;                      
(pos.getX() / 3) * 3;
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-05-22 18:09:55

除法是整数除法,因此它将删除余数。执行整数除法,然后进行乘法运算,将得到正确3x3块的第一个单元格索引。

例如。

代码语言:javascript
复制
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
票数 1
EN

Stack Overflow用户

发布于 2012-05-22 17:52:28

因为我们想要3的倍数,我们想要小于pos.getX()的3的最大倍数。它对应于当前3x3正方形中的左上角单元格。

请记住,X/3必须是整数,因此( X /3)*3可能不等于X。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10699627

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档