一、“排除法用完了,还是卡住……”——数对/数组是进阶的关键
做数独时,你可能会遇到这种情况——
- 区块排除法都用完了,唯一余数也找了,但还是有很多格子填不出来
- 每个格子的候选数都是2-3个,无法确定
- “这道题是不是只能试数了?”
其实,很多时候不需要试数——你只是还没掌握数对/数组技巧。数对/数组是经典数独进阶技巧中最重要的一类,能帮你在区块排除法之外找到新的突破口,排除更多候选数,最终确定数字。
但很多新手对数对/数组一知半解——
- “数对是什么?两个格子候选数一样?”
- “显性数对和隐性数对有什么区别?”
- “数组就是三个格子候选数一样吗?”
- “怎么找数对/数组?我总是找不到。”
本文用大量示意图+实际例子,彻底讲透数对与数组——显性数对、隐性数对、显性数组、隐性数组,以及怎么找、怎么用。读完这篇,你会熟练使用数对/数组,解题能力更上一层楼。
二、数对/数组的基本原理
数对/数组的核心原理是——如果某行/列/宫中,有n个格子的候选数恰好是n个数字(或子集),那么这n个数字一定填在这n个格子里,该行/列/宫的其他格子都不能是这n个数字。
简单说:
- 数对(n=2):2个格子的候选数都是{a,b}(或子集)→ 这2个格子一定是a和b → 其他格子不能是a或b
- 数组(n=3/4):3个格子的候选数都是{a,b,c}(或子集)→ 这3个格子一定是a、b、c → 其他格子不能是a、b或c
【示意图1:基本原理。某一行有9个格子,其中2个格子的候选数都是{3,5}(用蓝色标出)。用红色斜线划掉该行其他格子的候选数3和5。旁边标注“数对:2格都是{3,5}→这2格是3和5→其他格排除3和5”。】
为什么这个原理成立?因为这n个格子只能填这n个数字(候选数只有这些),而n个格子需要填n个不同的数字(行/列/宫不重复),所以这n个数字恰好填在这n个格子里。既然这n个数字已经被这n个格子“占用”了,其他格子就不能再是这n个数字了。
三、显性数对(Naked Pair)——最基础的数对
定义:某行/列/宫中,有2个格子的候选数完全相同,且都只有2个候选数。这2个格子就是显性数对。
【示意图2:显性数对。某一行有2个格子,候选数都是{3,5}(用蓝色标出,每个格子里都写着小候选数3和5)。用红色斜线划掉该行其他格子的候选数3和5。旁边标注“显性数对:2格候选数完全相同(都是{3,5})→排除其他格的3和5”。】
推理过程:
- 在某行/列/宫中,找到2个候选数完全相同的格子(都是{a,b})
- 这2个格子一定是a和b(虽然还不确定哪个是a、哪个是b)
- 所以该行/列/宫的其他格子都不能是a或b
- 擦除其他格子的候选数a和b
- 擦除后,可能出现新的唯一余数(某个格子只剩1个候选数),直接填入
例子:
【示意图3:显性数对例子。某一行有9个格子,格子R1C2和R1C5的候选数都是{4,7}(显性数对)。该行其他格子中,R1C8的候选数是{4,6,9}——擦除4后,候选数变成{6,9}。R1C9的候选数是{2,4,7}——擦除4和7后,候选数变成{2}(唯一余数),直接填入2。用绿色标出R1C9=2。】
要点:显性数对是最基础、最容易识别的数对——2个格子候选数完全相同。新手必须熟练掌握。找到显性数对后,排除其他格子的这2个候选数,经常能触发唯一余数(直接填数字)。
四、隐性数对(Hidden Pair)——最容易忽略的数对
定义:某行/列/宫中,有2个数字只能填在2个格子里(其他格子都没有这2个候选数),那么这2个格子就是隐性数对——这2个格子的其他候选数都可以擦除(因为这2个格子只能是这2个数字)。
【示意图4:隐性数对。某一行有9个格子,数字3和5只在2个格子(R1C3和R1C7)的候选数里出现(用黄色标出这2个格子,其他格子都没有3和5)。这2个格子的候选数分别是{3,5,8}和{2,3,5}——擦除其他候选数(8和2),变成{3,5}和{3,5}(显性数对)。旁边标注“隐性数对:3和5只能在这2格→擦除这2格的其他候选数→变成显性数对”。】
推理过程:
- 在某行/列/宫中,找2个数字,它们只在2个格子的候选数里出现(其他格子都没有这2个数字)
- 这2个数字一定填在这2个格子里(因为其他格子不能是这2个数字)
- 所以这2个格子只能是这2个数字——擦除这2个格子的其他候选数
- 擦除后,这2个格子变成显性数对(候选数都是这2个数字)
- 然后就可以像显性数对一样,排除其他格子的这2个候选数
显性数对 vs 隐性数对:
| 类型 | 识别方式 | 动作 |
|---|---|---|
| 显性数对 | 2个格子候选数完全相同 | 排除其他格子的这2个候选数 |
| 隐性数对 | 2个数字只在2个格子里出现 | 擦除这2个格子的其他候选数(变成显性数对) |
要点:隐性数对比显性数对难识别——因为它不是“2个格子候选数相同”,而是“2个数字只在2个格子里出现”。很多新手会忽略隐性数对,导致卡住。做题时,除了找显性数对,还要找隐性数对——对每个数字,看它在某行/列/宫只能填在哪些格子里,如果2个数字都只能填在同样的2个格子里,就是隐性数对。
五、显性数组(Naked Triple/Quad)——数对的扩展
定义:某行/列/宫中,有n个格子(n=3或4)的候选数都是某n个数字的子集(不一定完全相同,但都只包含这n个数字)。这n个格子就是显性数组。
注意:显性数组的候选数不一定完全相同——只要都只包含这n个数字就行。例如3个格子的候选数分别是{3,5}、{5,7}、{3,7}——都只包含{3,5,7}这3个数字,所以是显性数组(Triple)。
【示意图5:显性数组(Triple)。某一行有3个格子,候选数分别是{3,5}、{5,7}、{3,7}(用蓝色标出)。它们都只包含{3,5,7}这3个数字。用红色斜线划掉该行其他格子的候选数3、5、7。旁边标注“显性数组:3格候选数都是{3,5,7}的子集→这3格是3、5、7→其他格排除3、5、7”。】
推理过程:
- 在某行/列/宫中,找到n个格子(n=3或4),它们的候选数都只包含某n个数字(子集)
- 这n个格子一定是这n个数字(虽然还不确定具体哪个是哪个)
- 所以该行/列/宫的其他格子都不能是这n个数字
- 擦除其他格子的这n个候选数
显性数组的常见形式:
- 完全相同:3个格子候选数都是{3,5,7}(最明显)
- 两两组合:3个格子候选数分别是{3,5}、{5,7}、{3,7}(最常见,容易忽略)
- 混合:3个格子候选数分别是{3,5,7}、{3,5}、{5,7}(也可以)
要点:显性数组(特别是Triple)比数对难识别——因为候选数不一定完全相同,可能是子集。很多新手会忽略“两两组合”形式的显性数组(如{3,5}、{5,7}、{3,7})。做题时,看到3个格子的候选数都只包含同样的3个数字(不管是完全相同还是子集),就要想到显性数组。
六、隐性数组(Hidden Triple/Quad)——最难识别的数组
定义:某行/列/宫中,有n个数字(n=3或4)只能填在n个格子里(其他格子都没有这n个候选数),那么这n个格子就是隐性数组——这n个格子的其他候选数都可以擦除。
隐性数组是隐性数对的扩展——把“2个数字”换成“3个或4个数字”。
【示意图6:隐性数组(Triple)。某一行有9个格子,数字3、5、7只在3个格子(R1C2、R1C5、R1C8)的候选数里出现(用黄色标出这3个格子)。这3个格子的候选数分别是{3,5,8}、{2,5,7}、{3,4,7}——擦除其他候选数(8、2、4),变成{3,5}、{5,7}、{3,7}(显性数组)。旁边标注“隐性数组:3、5、7只能在这3格→擦除其他候选数→变成显性数组”。】
要点:隐性数组是最难识别的数组技巧——需要对每个数字看它在某行/列/宫只能填在哪些格子里,然后找3个或4个数字都只能填在同样的格子里。这种技巧在高级题中使用,新手可以先掌握显性数对/数组和隐性数对,熟练后再练习隐性数组。
七、数对/数组的识别流程
怎么系统地找数对/数组?按以下流程:
【示意图7:识别流程图。用方框和箭头画出上面的7步,每步配一个小图标(候选数标记、显性数对、隐性数对等)。】
八、数对/数组+区块排除的组合
数对/数组经常跟区块排除组合使用——区块排除帮你标记候选数,数对/数组帮你排除更多候选数,然后又触发新的区块排除和唯一余数。
典型流程:
- 用区块排除法标记候选数
- 找到显性数对(2个格子候选数相同)
- 排除其他格子的这2个候选数
- 排除后,某个格子变成唯一余数(候选数只剩1个),直接填入
- 填入后,用区块排除更新候选数
- 更新后,又找到新的数对/数组……
这种“区块排除→数对/数组→唯一余数→区块排除”的循环,是中高级数独最常用的解题流程。掌握了这个循环,你就能解决大多数中高级数独。
九、常见错误
错误1:数对/数组不在同一行/列/宫
表现:2个格子候选数相同,但不在同一行/列/宫——这不是数对,不能排除其他格子的候选数。
避免:数对/数组必须在同一行/列/宫内——只有同一行/列/宫的格子才共享“不重复”的约束。不在同一行/列/宫的格子,即使候选数相同,也不是数对。
错误2:显性数组的候选数超出了n个数字
表现:以为3个格子是数组,但其中一个格子的候选数包含了第4个数字(如{3,5,7,8})——这不是数组。
避免:显性数组的所有格子的候选数都必须只包含这n个数字(子集)——如果有一个格子包含了第n+1个数字,就不是数组。
错误3:隐性数对判断错误(数字还能填在其他格子)
表现:以为2个数字只能填在2个格子里,但实际上这2个数字还能填在其他格子(候选数标记不全或没看到)。
避免:判断隐性数对时,仔细检查这2个数字是否真的只在这2个格子里出现——扫一遍该行/列/宫的所有格子,确认其他格子都没有这2个候选数。
错误4:找到数对/数组后不更新候选数
表现:找到了数对/数组,但没有擦除相关候选数(显性数对要擦其他格子的,隐性数对要擦这2个格子的),导致候选数过时。
避免:找到数对/数组后,立刻擦除相关候选数,保持候选数最新。擦除后检查有没有唯一余数。
十、数对/数组速查表
| 类型 | 识别 | 动作 | 难度 |
|---|---|---|---|
| 显性数对(Naked Pair) | 2格候选数完全相同 | 排除其他格的这2个候选数 | ★★☆☆☆ |
| 隐性数对(Hidden Pair) | 2个数字只在2格出现 | 擦除这2格的其他候选数 | ★★★☆☆ |
| 显性数组(Naked Triple) | 3格候选数都是某3个数字的子集 | 排除其他格的这3个候选数 | ★★★☆☆ |
| 显性数组(Naked Quad) | 4格候选数都是某4个数字的子集 | 排除其他格的这4个候选数 | ★★★★☆ |
| 隐性数组(Hidden Triple) | 3个数字只在3格出现 | 擦除这3格的其他候选数 | ★★★★☆ |
| 隐性数组(Hidden Quad) | 4个数字只在4格出现 | 擦除这4格的其他候选数 | ★★★★★ |
十一、总结
数对/数组是经典数独进阶技巧中最重要的一类——当区块排除法不够用时,数对/数组能帮你找到新的突破口。
6种数对/数组:
- 显性数对:2格候选数完全相同→排除其他格(基础,必须熟练)
- 隐性数对:2个数字只在2格出现→擦这2格其他候选数(容易忽略)
- 显性数组(Triple):3格候选数都是某3个数字的子集→排除其他格(常见,特别是两两组合形式)
- 显性数组(Quad):4格候选数都是某4个数字的子集→排除其他格(较难)
- 隐性数组(Triple):3个数字只在3格出现→擦这3格其他候选数(难识别)
- 隐性数组(Quad):4个数字只在4格出现→擦这4格其他候选数(最难识别)
核心建议:
- 先掌握显性数对(最基础),再掌握隐性数对和显性数组(Triple),最后练习隐性数组和Quad
- 数对/数组必须在同一行/列/宫内——不在同一行/列/宫的不是数对/数组
- 显性数组的候选数不一定完全相同——只要都是某n个数字的子集就行
- 找到数对/数组后,立刻更新候选数,检查唯一余数
- 数对/数组经常跟区块排除组合使用,形成“区块排除→数对/数组→唯一余数”的循环
数对/数组是从“新手”到“高手”的关键技巧——掌握了数对/数组,你就能解决大多数中高级数独,解题能力会有质的飞跃。