前言:
此刻姐妹们对“c语言数独”大体比较珍视,大家都需要了解一些“c语言数独”的相关资讯。那么小编也在网上汇集了一些对于“c语言数独””的相关内容,希望小伙伴们能喜欢,你们快快来了解一下吧!玩转数独第二课:宫内排除法,你学会了吗?今天我们学习第三课:行列排除法。它和宫内排除法的原理类似。
数独的规则中,每行每列只能填1~9这九个数字,且不能重复。根据某行或某列的已知数字,可以推出还缺哪几个数字,再结合其他条件,就可以确定某个数字应该填的位置。下面老师结合示例来说明,什么是行列排除法。
示例1:已知的数字有:C行1、2、3、4、5,E1格是7,F5格是7,G9格是7。你会从哪里开始做这一题呢?先思考数字几的填法?
分析:C行已知的数字最多,我们当然从C行开始思考。除C行外,我们还知道三个数字7,恰好C行缺数字7,所以我们先思考的应该是:C行数字7应该填在哪里?E1格是7,那1列不能再有7了,F5和G9格都是7,那5列和9列也不能再有数字7了。看下图,显然C行的数字7只能填在C8格。
示例2:已知的数字有5列的3、7、8、2,C2格是5,D6格是5。我们应该从哪里开始做这一题呢?应该先思考哪个数字的填法呢?
分析:话不多说,和示例1相同,我们应该先思考:5列的数字5应该填在哪个位置?C2格是5,那么C行不能再有数字5了,D6格是5,不仅仅排除了D行不能填数字5哦!因为D6格在五宫,整个五宫都不能再填数字5了,也就是D5、E5、F5格都不能填数字5。如图所示,5列的数字5只能填在I5格。
示例1、示例2展示了应该怎么来用行列排除法,你学会了吗?前面的文章,有的读者说太简单了,那我们直接上例题喽,怎么用宫内排除法和行列排除法,把下面的盘面填出来呢?
分析:我首先看到的是B行,已知6个数字,只缺2、6、7,因为一宫有数字7,E3格是6,所以B3不能填6,也不能填7,那只能填2。F9格是7,那9列不能再有数字7,所以B行的数字7只能填在B6格,剩下的数字2就填在B9格。
九个宫中有七个宫都有数字7,我们可以用宫内排除法填出三宫、五宫的数字7。
然后利用宫内排除法,依次找出七宫、三宫、五宫、二宫中数字1应该填的位置。
接着利用宫内排除法,可以填出二宫的所有数字,一宫、四宫、六宫的数字9,依次填出四宫、一宫的数字4,还可以填出C9格是8。利用行列排除法可以推出,4列的数字9应该填在I4格,H行的数字5应该填在H7格。再利用宫内排除法填出六宫的数字5,利用行列排除法填出E行所有数字,再依次填出四宫、一宫、2列、3列的所有数字。八宫数字5的位置也能找到啦,6列的所有数字也能填出来。填出五宫的数字5,五宫、5列、F行的所有数字都能填出来,接着可以依次填出六宫、三宫、8列、9列、八宫、九宫的所有数字,最后只剩G行、H行、I行还缺一个数字,结果全出来了。(答案见下图)
课后练习题:
标签: #c语言数独