一、为什么需要候选数
只靠肉眼排除硬推,容易在两三个候选之间打转。候选数的思路是:先不急着定,把每格「还可能是哪些数字」列出来,让排除越走越窄。
注意有两个方向:问「这格还能填什么」是格子视角,问「这个数字还能落在哪」是数字视角。两套排除法其实是同一件事的两面,熟练之后会同时用。
二、候选数怎么手算:行、列、宫三步排除
行排除。同一行里已经有 5 和 7,那这一行剩下的空格都不可能是 5 和 7。
列排除。同一列里已经有 3,那这一列剩下的空格都不可能是 3。
宫排除。同一个 3×3 宫里已经有 9,这一宫剩下的空格都不能是 9。
三条一起用:一格在 1 到 9 里被排除到只剩最后一个数字,它就是隐性数(naked single)。
怎么记:本站这版不会替你在格子里标候选数,页面就是 81 个格子供你填。所以候选得自己写在纸上,一格一行,在格子边上写小数字;也可以另画一张表,列出「5 的候选位置」在哪几格。
不用每格都写。只在难啃的区域记,通常是候选超过两个的格子。候选一多就乱,乱了就容易把某个数字漏掉。
三、显式数与隐性数:别被中文译名坑了
隐性数(naked single):某一格只剩一个候选数,那格就是答案。名字里的 naked 指的是「格子自己把答案露出来了」。
显式数(hidden single):某个数字在某一行、一列或一宫里只剩一个落点,那格就是这个数字。名字里的 hidden 指的是「数字藏起来了,得你去找它的位置」。
中文译名在网上很乱,同一个词有人指格子有人指数字,混着看很容易搞反。以英文名为准:naked 是格子视角,hidden 是数字视角。
找显式数的做法:选一个你刚填进去的数字,比如 6,在它所在的行、列、宫里各扫一遍,看 6 还剩几个可能的落点;只剩一个,那格就是 6。
四、区块技巧:锁死候选与宣称
锁死候选(pointing)。某一行里,某个数字的所有候选位置都落在同一个宫内。那么这个数字在这个宫里就只剩那一行的那个位置可以放,其他行同宫的候选可以全划掉。
宣称(claiming)。某一宫里,某个数字的所有候选位置都落在同一行内。那么这个数字在这一行里就只剩那一宫的那个位置可以放。
两者都是缩小范围,最后仍要落到「某格候选唯一」或「某数字落点唯一」。区别是方向相反:锁死候选用行看宫,宣称用宫看行。
再往上一层是成对候选:两格的候选完全一样(比如都是 2 和 5),这两个数字在这两格里只能各占一个,可以合并处理;反过来,某个数字的两处候选完全一样,也能据此推出第三格。遇到这种局面,就是成对候选该上场了。
本站的题目都是唯一解。所以一旦你推出矛盾,那就是你的某一步错了,而不是题目有两个答案。矛盾是免费的错误探测器。
五、卡住时:反证法与回溯
卡住通常不是你不会,是上一步错了,或者需要更高级的技巧。顺序上先试回溯,再试反证。
反证法(假设法):假设某格填 X,然后从这格出发把整盘的约束推一遍。如果推出了矛盾,比如某个格同时只能是 5 和 7,那 X 就是错的,X 之外的那个候选才是答案。
回溯步骤:
- 擦掉你最后填的那一格,或最后几格,退回到上一个自洽的局面。
- 重扫这几格的行、列、宫,看是不是漏掉了一个候选。
- 还是推不动,就改用反证法,对两三个候选逐个假设。
- 整盘只剩一两处在反复打转时,回到更早的一手重推,别在原地磨。
一个实用经验:一格填下去之后你越推越乱,八成是这一格选错了候选。但别急着改,先把刚才用来排除它的理由重新读一遍,很多「错在最后一格」其实是那条排除规则本身用错了,比如把宫的约束当成了列的。
六、速查清单
- 先扫隐性数:每格的候选是不是只剩一个。
- 再扫显式数:每个数字在行、列、宫里是不是只剩一个落点。
- 数字视角:把某一行的候选按数字列一遍,找只剩一处落点的数字。
- 区块:锁死候选(行看宫)、宣称(宫看行)。
- 成对候选:两格候选相同,或某个数字的两处候选相同。
- 都不行就反证:假设某格是 X,一路推到矛盾为止。
- 推不动就回溯:擦掉最后一手,从上一个自洽局面重来。
- 全程写候选;剩下两三个候选来回打转时,先怀疑前面某一步填错了。
七、现在就玩
打开数独在线版:三档难度、81 格手填、实时撞号提示、计时器,上面每一条技巧都能在这上面练。
还没入门看 数独怎么玩;想了解这玩意的来历,看 数独的来历;全部攻略 都在这儿。
本站为第三方镜像,上游开源项目是 andreynering/sudoku,采用 MIT 协议,作者 Andrej Nering。游戏本体版权归原作者所有。
同款变体
想换规则重玩,看 数独的 6 种变体。