首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >6x6 sudoku拼图,找出你所在的区域

6x6 sudoku拼图,找出你所在的区域
EN

Stack Overflow用户
提问于 2015-02-24 14:02:49
回答 1查看 333关注 0票数 1

我正在做一个Sudoku解算器,我需要检查一个数字在当前扇区中是否是空闲的,我已经检查了数字的行和列,所以剩下的是扇区。

整个谜题是6x6,有3个(每个扇区2行)行扇区和2个(每个扇区3列)列扇区。

我检查的行和列如下:

代码语言:javascript
复制
for (int i = 0; i < 6; i++)
{
    if (Matrica[i][column] == CurrentNumber) return 0;
    if (Matrica[row][i] == CurrentNumber) return 0;
}

因为它是一个6x6矩阵,并且扇区是2x3(或者3x2不知道格式)

这个部门只剩下两个数字,我需要从我的行号和列号中找出我应该检查的位置,但是这个解决方案让我无法理解,我不知道该如何做。

解决方案:

对任何有兴趣的人来说,我都是这样做的:

代码语言:javascript
复制
int Tikrinimas(int number, int Matrica[][6], int row, int column)
{
int sectorRow = 2 * (row / 2);
int sectorCol = 3 * (column / 3);
int row1 = (row + 1) % 2;
int col1 = (column + 2) % 3;
int col2 = (column + 4) % 3;

/* Check for the value in the given row and column */
for (int i = 0; i < 6; i++)
{
    if (Matrica[i][column] == number) return 0;
    if (Matrica[row][i] == number) return 0;
}

/* Check the remaining two spaces in this sector */
if (Matrica[row1 + sectorRow][col1 + sectorCol] == number) return 0;
if (Matrica[row1 + sectorRow][col2 + sectorCol] == number) return 0;
return 1;
}

在函数中,这将检查当前设置号在该位置上是否可行。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-02-24 14:18:02

如果有一个划分为扇区的网格,则可以找到该扇区的一个角,然后将该扇区的所有或索引作为基础。假设是你的拼图的左上角,那么如果你在3岁的话,你所处的左上角区域将会是

代码语言:javascript
复制
rows_per_sector (2) * (current_row (3) / rows_per_sector (2)) = 2

cols_per_sector (3) * (current_col (5) / cols_per_sector (3)) = 3

现在,您可以使用2,3作为左上角,并且可以在偏移量中编码,以获得扇区的其余部分。

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

https://stackoverflow.com/questions/28697810

复制
相关文章

相似问题

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