再次陷入僵局,盘面上找不到摒除解和余数解了,进入第三招:X-Wing

听名字是不是完全不知道是什么?还是用题目来看。

第6步:先找到X-Wing,再使用余数法

第1手:数字5对R2、R8摒除,出现X-Wing结构

首先来看R2,因为r1c2为5,同处于B1的r2c2和r2c3不能为5;r5c7为5,所以同处C7的r2c7不能为5

再看R8,因为r7c3为5,同处于B7的r8c2和r8c3不能为5;r5c7为5,所以同处于C7的r8c7不能为5

5在R2有两种位置可以填,当填在r2c5时,则r2c8,r8c5不能为5,因此r8c8=5

情形若是如此,则C5,C8打×格均不能为5

当5填在r2c8时,r2c5,r8c5不能为5,因此r8c5=5

情形若如此,则C5,C8打×格均不能为5

可见不论是哪种情况,C5和C8除这4格以外(也就是上述两种情况的交集)不能再有5。这就是X-Wing的删减逻辑。

这手请记住删除了r3c8的5。

X-Wing是一个较难的进阶技巧,在进阶技巧中相对于后面我们会提到的区块、数对发生的几率小的多,但我们也要学会如何使用它。

第2手:点算r3c8的等位群格位已出现的数字

r1c8=2;r2c9=7;r3c3=8;r3c5=3;r3c7=1;r4c8=6;r6c8=9,加上之前的X-Wing排除了5的可能,所以得到r3c8=4

第7步:r6c7=4(宫摒余解,数字4对B6摒除)

在这里如果我们用2对C7摒除,可以得到摒余解r8c7=2,但可能这个观察范围过大,摒除的两个数字一个在r1c8,一个在r9c2,看起来很困难,但是我们可以利用下面介绍的区块摒除法架起一条桥梁,使观察变的容易一些。

第四招:区块摒除法

在利用摒除的时候,可能最后发现一个单元里面还剩不止一个格子为某个数,看似没什么用,其实不然,假设B1的1在r1c1或者r1c2,虽然我们不知道哪个是哪个,但是R1的其他空格不是就不能为1了么?

第8步:利用区块的观点来观察r8c7为何是2

第1手:数字2对B6摒除

得到B6的2在r4c9,r5c9,r6c9之中

r4c9,r5c9,r6c9是 B6和C9 的交集,我们称数字2形成区块

第2手:数字2对B9摒除

由于B6的2在r4c9,r5c9,r6c9之中,即C9的2在B6当中,对B9摒除后得到摒余解r8c7=2

读者们可以尝试下如果第4步用区块看会有什么效果。当您熟练地运用区块摒除法时就像一座桥梁,把一些本来距离很远,相对难观察的数字联系起来,当然这就需要记忆了。

第9步:r7c6=2(宫摒余解,数字2对B8摒除)

第10步:r7c4=7(宫摒余解,数字7对B8摒除)

第11步:r3c6=7(宫摒余解,数字7对B7摒除)

第12步:r5c9=2(行摒余解,数字2对R5摒除)

第13步:r6c9=1(宫摒余解,数字1对B6摒除)

第14步:r5c4=1(宫摒余解,数字1对B5摒除)

第15步:r7c2=4(行摒余解,数字4对R7摒除)

第16步:r4c3=4(宫摒余解,数字4对B4摒除)

第17步:r6c3=2(宫摒余解,数字2对B4摒除)

第18步:r5c6=4(宫摒余解,数字4对B5摒除)

第19步:r4c5=2(宫摒余解,数字2对B5摒除)

第20步:r4c6=9(宫摒余解,数字9对B5摒除)

当一个单元里面某两个数A和B只能在某2个格子的时候,该单元中其他格就不能再有这两个数字了,这就是第五招:数对法,听起来有点玄乎,用这道题来看就容易了。

第21步:先找出数对,然后利用数对的占位进行摒除。

第1手:数字1,9对B2摒除

这时我们需要同时用两个数字来摒除,r5c4与r8c6的1对B2摒除得到1在r1c5或r2c5;r8c4与r4c6的9对B2摒除得到9也在r1c5或r2c5,所以B2的1和9占据了r1c5和r2c5这两个位置。

第2手:数字4对B2摒除

数字4对B2摒除后,还有2个空格可填4,但数对占用了2个空格的1个(r1c5),只剩下一个空格r1c4,所以得到r1c4=4

第22步:r1c6=8(宫摒余解,数字8对B2摒除)

第23步:r3c4=5(唯余解)

第24步:r2c8=5(宫摒余解,数字5对B3摒除)

第25步:r9c9=5(宫摒余解,数字5对B9摒除)

第26步:r8c5=5(宫摒余解,数字5对B8摒除)

第27步:r6c6=5(宫摒余解,数字5对B5摒除)

当某个单元中8格都被解出,则剩下的那个一定是未出现的第9个数字了,这就是第六招:唯一数。唯一数是唯余的特例,因为它只要观察一个单元,所以观察容易多了。

第28步:观察C6

C6还剩一格没填数字,只有3还没出现,所以r9c6=3。

唯一数可谓是最容易理解的招数了,所以当有唯一数出现的时候,读者千万别忽略它哦!

第29步:r9c5=4(宫摒余解,数字4对B8摒除)

第30步:r9c4=6(B8唯一数)

第31步:r6c5=6(宫摒余解,数字6对B5摒除)

第32步:r1c9=3(宫摒余解,数字3对B3摒除)

第33步:r5c8=3(宫摒余解,数字3对B6摒除)

第34步:r4c9=8(B6唯一数)

第35步:r8c8=8(C8唯一数)

第36步:r6c4=8(宫摒余解,数字8对B5摒除)

第37步:r6c4=8(B5唯一数)

第38步:r4c1=5(R4唯一数)

第39步:r6c1=3(R6唯一数)

第40步:r2c7=8(数字8对B3摒除)

第41步:r9c1=8(数字8对B7摒除)

第42步:r5c2=8(数字8对B4摒除)

第43步:r5c1=6(B4唯一数)

第44步:r3c2=6(宫摒余解,数字6对B1摒除)

第45步:r3c9=9(R3唯一数)

第46步:r1c7=6(B3唯一数)

第47步:r7c9=6(C9唯一数)

第48步:r9c7=9(B9唯一数)

第49步:r9c3=1(R9唯一数)

第50步:r7c1=9(R7唯一数)

第51步:r1c1=1(C1唯一数)

第52步:r1c5=9(R1唯一数)

第53步:r2c5=1(R2唯一数)

第54步:r2c2=9(宫摒余解,数字9对B1摒除)

第55步:r2c3=3(B1唯一数)

第56步:r8c2=3(C2唯一数)

第57步:r8c3=6(B7唯一数)

完成

java数独求交集方法,标准数独解题之旅(用一道数独题讲解最基本的5种解题技巧)(二)...相关推荐

  1. 【分享】Java集合求交集、并集、差集

    面试场景: 之前遇到一个长得很有趣的面试官问两个集合怎么求他们的交集.并集.茶集,回答之后觉得非常有意思,在这里记录一下: 概念说明 一.交集 交集:两个集合的公共(相交)部分,如下图: 代码案例: ...

  2. java 数组求交集_Java数组的交集、并集

    // 求两个数组的交集 public static int[] SameOfTwoArrays(int[] arr1, int[] arr2) { // 新建一个空数组,用于存储交集,空数组长度应该为 ...

  3. java微积分计算步骤_一次刨根问底的收获——从一道微积分题说开去

    几个月前的一天,公众号有个粉丝通过后台联系我,说是大一学生马上要期末考试了,有些高数问题能不能请教下. 要知道,我对数学和魔术相关需求,简直就像自己家里的事一样,那是来者不拒的.所以我就说,你发来看看 ...

  4. java 交集_Java大集合求交集的方法比较

    两个List集合求交集想必学过Java的都知道用系统自带的retainAll()方法,但是在数据量比较大时,这个方法效率并不高,利用空余时间研究了几种数据量较大时求两个集合交集的办法.本文主要研究了J ...

  5. JAVA——两个List集合求交集、并集和差集(去重)模板

    关注微信公众号:CodingTechWork,一起学习进步. 引言   经常遇到一些集合类之间的过滤数据.求合集之类的问题,在此以List为例,毕竟在数据库中取数据后,我们使用比较多的是List集合进 ...

  6. java list intersect_C#编程中两个List集合使用Intersect方法求交集

    在C#语言程序设计中,List集合是常用的集合数据类型,在涉及集合类型的运算中,有时候我们需要计算2个List集合中共有的数据,即对2个List集合求交集运算.此时可以使用C#语言提供的Interse ...

  7. java 时间段求并集,java集合操作-----求两个集合的交集和并集

    2019独角兽企业重金招聘Python工程师标准>>> java求两个集合的交集和并集 java如何求两个集合的交集和并集呢??其实java的API中已经封装了方法.今天写个简单的例 ...

  8. 逆向查找_CTFer成长之路--一道数独逆向题目解题过程(算法分析、查找线索)...

    前言 CTF 是实战性很强的赛事.仅学习理论知识,不进行实操,永远无法成为 CTF 大神.本次博客为大家解读一道数独相关的逆向,讲解解题过程,总结知识点(CTF中的套路). 题目介绍 本次选择的是出自 ...

  9. list1与list2求交集的方法总结!

    一.有序集合求交集的方法有 a)二重for循环法,时间复杂度O(n*n) b)拉链法,时间复杂度O(n) c)水平分桶,多线程并行 d)bitmap,大大提高运算并行度,时间复杂度O(n) e)跳表, ...

  10. java语言中如何表示素数,使用Java语言求素数的几个方法

    使用Java语言求素数的几个方法 今天找了一篇"面试50题"的文档,第一题是求fibonacci数列,使用递归很容易就实现了,没什么难度. 第二题是输出101~200之间的素数,没 ...

最新文章

  1. oracle Ratio_to_report的用法
  2. What is Gameplay
  3. 运用RUP 4+1视图方法进行软件架构设计
  4. 【DBMS 数据库管理系统】数据库 体系化环境 ( 数据库体系化环境简介 | 四层体系化环境 | 数据集市 )
  5. The import com.sun.tools cannot be resolved
  6. laravel ajax ip,怎么在Laravel中利用AJAX动态刷新部分页面
  7. docker搭建pxc集群
  8. 解决IIS占用CPU和内存大的问题
  9. 飞猪信息流内容推荐探索
  10. iOS7中UIView的animateKeyframesWithDuration方法讲解
  11. WC3L联赛结束了!!!
  12. Go 语言初级教程之一[变量声明]
  13. Spring的 @ExceptionHandler注解无效问题
  14. linux常用命令(21)tar命令
  15. 【数学建模】五:MATLAB优化模型求解方法(1):标准模型
  16. 一文搞懂HTTPProxy丨含基础、高级路由、服务韧性
  17. 360无线网卡驱动服务器,360驱动大师中安装无线网卡驱动的方法介绍
  18. 试答一道经典的腾讯面试题:QQ的MVP
  19. 串口服务器与协议转换器的区别,串口服务器和串口转以太网模块区别
  20. unity 模拟抛物线

热门文章

  1. 网站搜索优化SEO概念与方法
  2. (收藏)《博客园精华集》ASP.NET分册
  3. 导出windows密码技巧总结
  4. 计算机网络技术ui设计,UI设计小白到大神的进阶之路—入门基础篇
  5. 基于SSM的图书商城的设计与实现(文末附源码)
  6. [转]Netlog 的数据库及 LAMP 架构
  7. IP地址物理位置查询
  8. 每日一题-12.30-三态数据总线
  9. ESP8266-Arduino编程实例-HMC5883L磁场传感器
  10. java文件上传与下载