再次陷入僵局,盘面上找不到摒除解和余数解了,进入第三招: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. 最佳页面置换算法代码_(存储管理)页面置换算法
  2. 构建高性能J2EE应用的十个技巧
  3. 《暗时间》的笔记-我在南大的七年
  4. HBase总结(九)Bloom Filter概念和原理
  5. .Net Core迁移到MSBuild平台
  6. drools dmn_使用Drools的DMN运行时示例
  7. RabbitMQ(三) 集群配置
  8. 虚拟dom_从0到1实现一个虚拟DOM
  9. 微服务架构到底是什么鬼?
  10. 61.新的开始(最小生成树)
  11. 如何在VS2013中进行Boost单元测试
  12. 动态代理的两种方式_一文帮你掌握Java中的动态代理
  13. 计算机组成原理:最详细笔记
  14. kali linux渗透测试(一) --- set社工攻击
  15. 笔试记录 58同城 算法 20200921
  16. Docker基础第一步、什么是Docker
  17. 超实数与布尔巴基学派
  18. Excel行高与像素值,列宽与像素值之间的转换,绘制Excel像素画。
  19. linux服务器停止步骤,停止和重新启动许可服务器的步骤
  20. sdkman 的安装和使用

热门文章

  1. 办公室计算机设备搬迁计划方案,计算机机房整体搬迁方案稿 执行计划.doc
  2. (四)机器学习方法的分类
  3. layabox 打印_LayaBox开发实战之实现一个简单的模板类
  4. mysql慢查询日志时间戳_MySQL慢查询日志释疑总结
  5. win11家庭版安装时如何跳过联网设置 windows11家庭版跳过联网设置的步骤方法
  6. 水环境指标 中文对照
  7. 硬盘虚拟分区精灵 v2.3 bt
  8. 安卓优雅的svg实践绚丽效果
  9. java speex回声消除_android – Speex回音消除配置
  10. 计算机主机清洁维护,电脑主机日常维护保养