Content #
用3个数组标记每行、每列、每个子网格已用的数字。
- row[i][x]:用于标记第i行中的数字x是否出现。
- col[j][y]:用于标记第j列中的数字y是否出现。
- grid[k][z]:标记第k个3×3子网格中的数字z是否出现。
把一个9行9列的网格再细分为9个3×3的子网格,在每个子网格内都不允许出现相同的数字,那么我们将9个子网格编号为1~9,在同一个子网格内不允许出现相同的数字。

观察子网格的序号k与行i、列j的关系:
- 如果把第1~3行转换为0,第4~5行转换为1,第7~9行转换为2,则a=(i-1)/3;
- 如果把第1~3列转换为0,第4~5列转换为1,第7~9列转换为2,则b=(j-1)/3。
行i、列j对应的子网格编号k=3×a+b+1=3×((i-1)/3)+(j-1)/3+1。