这个公式应该怎么推导呢?
格子在整体的小行号,等于格子在柜子的小行号,加上三倍的柜子的大行号.格子在整体的小列号,等于格子在柜子的小列号,加上三倍的柜子的大列号.$j =0 + 3 = 3$.
我们回溯这个算式,得到:
这就是计算坐标的公式.实际上,你会发现这其实就是用一维数组存放二维数组的公式.
同时,可以总结一个规律:
当以先行后列的顺序遍历时,模可得行号,除可得列号.(其中,行,列号都是相对于其"容器"而言的)
判断一个 9x9 的数独是否有效.只需要根据以下规则,验证已经填入的数字是否有效即可.
数字 1-9 在每一行只能出现一次.
数字 1-9 在每一列只能出现一次.
数字 1-9 在每一个以粗实线分隔的 3x3 宫内只能出现一次.
当然,考虑到性能,虽然是哈希表检查重复,但是不一定非要用哈希表结构,用位图也是可以的: