5

在此处输入图像描述

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

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

我在计算单元格所属的正方形的“数字”时遇到问题(它们从 1 开始,从左到右、从上到下增加),因此上面的正方形的数字是:

1|2
3|4

我怎么能去计算这个?任何建议,将不胜感激。一个特定于 Java 的方法,或者只是一个算法都可以:)

4

3 回答 3

6
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;
}
于 2011-03-11T05:03:16.193 回答
0
squareX = 1 + (cellX - 1) / cellsPerSquareX;
squareY = 1 + (cellY - 1) / cellsPerSquareY;
于 2011-03-11T05:03:15.220 回答
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;
于 2011-03-11T05:21:25.160 回答