数独 - 基于行,列查找当前正方形

时间:2011-03-11 04:49:51

标签: java sudoku

enter image description here

基于上图中的上述坐标,我希望能够计算出以红色突出显示的“正方形”,所选单元格属于。

我正在解决一个数独谜题,我可以访问每个方格的宽度,以及单元格所在的行/列。

我无法计算单元格所属正方形的“数字”(它们从1开始,从左到右,从上到下增加),因此正方形的数量以上是:

1 | 2
3 | 4

我怎么能计算这个呢?任何建议,将不胜感激。要么是特定于Java的方法,要么只是算法就可以了:)

3 个答案:

答案 0 :(得分:3)

int numMajorRows = 2;
int numMajorCols = 2;  
int width = 2;

// assuming row and col also start at 1.  
int squareNumber(int row, int col) {
  int majorRow = (row-1) / width;  // zero based majorRow
  int majorCol = (col-1) / width;  // zero based majorCol
  return majorCol + majorRow * numMajorCols + 1;
}

答案 1 :(得分:0)

squareX = 1 + (cellX - 1) / cellsPerSquareX;
squareY = 1 + (cellY - 1) / cellsPerSquareY;

答案 2 :(得分:0)

int width = 2;
int nCols = Math.pow(width, 2);
int nRows = Math.pow(width, 2);

int cellRow = 2;
int cellCol = 2;

int squareRow = (cellRow - 1) / nRows;
int squareCol = (cellCol - 1) / nCols;

int squareNum = (squareRow * width) + squareCol + 1;