宮排除法是標(biāo)準(zhǔn)數(shù)獨中最常用的算法,即通過宮以外的行(或列)中已經(jīng)出現(xiàn)的數(shù)字對這個宮的若干空格進行排除,當(dāng)最終在宮中只剩下唯一空格沒有被某個數(shù)字排除時,這個唯一空格中的值就是該數(shù)字。
一個數(shù)字出現(xiàn)的次數(shù)越多,這個數(shù)字對沒有出現(xiàn)該數(shù)字的宮的排除效果就越好,得出唯一解的概率也越大。
我們試一下應(yīng)用宮排除法,在如圖1所示的例題中找出數(shù)字8的全部位置。
第一宮、第二宮、第六宮、第八宮、第九宮中,數(shù)字8已經(jīng)作為提示數(shù)出現(xiàn),只需要找出第三宮、第四宮、第五宮、第七宮中數(shù)字8的位置。
第1步:如圖2,應(yīng)用宮排除法,第三宮的R2C7=8。
第2步:如圖2,應(yīng)用宮排除法,第七宮的R9C1=8。
第3步:如圖3,應(yīng)用宮排除法,第四宮的R6C2=8。
第4步:如圖4,應(yīng)用宮排除法,第五宮的R4C5=8。
如果一個數(shù)字在某一行(列)中沒有出現(xiàn),但是該行(列)穿過的宮中出現(xiàn)了該數(shù)字,這種情況下多應(yīng)用行(列)排除法。
實際的解題過程中,行(列)排除法的應(yīng)用條件比宮排除法更難被發(fā)現(xiàn),需要細心地觀察。
應(yīng)用行(列)排除法時,要盡量選擇空格較少的行(列)進行觀察,盡量選擇出現(xiàn)次數(shù)較多的數(shù)字進行排除,然后再觀察該行中空格所在的列(行)以及該行(列)穿過的宮。
我們試一下,應(yīng)用行排除法,在如圖5所示的例題中找出第四行中數(shù)字7的位置。
因為第六宮中R6C8=7,所以R4C(7,8,9)≠7;
因為第一列中R8C1=7,所以R4C1≠7;
因為第三列中R2C3=7,所以R4C3≠7;
因為第四列中R1C4=7,所以R4C4≠7。
綜合以上情況,應(yīng)用行排除法,第四行中R4C6=7。
再試一下應(yīng)用列排除法,在如圖6所示的例題中找出第一列中數(shù)字1的位置。
因為第三行中R3C4=1,所以R3C1≠1;
因為第四行中R4C7=1,所以R4C1≠1;
因為第五行中R5C5=1,所以R5C1≠1;
因為第七行中R7C8=1,所以R7C1≠1。
綜合以上情況,應(yīng)用列排除法,第一列中R9C1=1。
下面試著挑戰(zhàn)一下后面的習(xí)題吧!