#大有学问#
一、数独规则
解数独大家都玩过,它的规则是:
1.数字1-9在每一行只能出现一次。
2.数字1-9在每一列只能出现一次。
3.数字1-9 在每一个粗实线围成的3×3方格中 只能出现一次。
下图就是一个未解答的数独
数独
二、计算机求解数独思路
那如何解答数独呢?下图为解答的思路图:
思路图
解答的思路是:
1.选择一个未填空的方格(可以按照从左到右,从上到下的顺序选择),如果发现没有未填空的方格,则说明数独已解答。
2.在选定的方格中尝试填入数字1-9,分别检查填入的数字是否违反数独的规则(见上),如果不违反规则,继续执行1。如果违反规则,就将填入的数字清除,继续选择其他数字填入该方格进行尝试。如果发现该方格无法填入1-9的任何数字,则说明该数独无解。
实例讲解:
思路看起来有点绕,我们拿实例讲解。案例中,首先我们选择第一行第三列的格子,尝试填入数字1。由检查得,它没有违反数独规则。因此,继续选择第一行第四列的格子,尝试填入数字1,发现这违反了数独规则1(数字1-9在每一行只能出现一次),于是删除该格填入的数字。再次尝试在第一行第四列的格子中填入数字2,由检查得,它没有违反数独规则。可以继续选择新的格子尝试填入数字。如此循环,直到找出数独的解或者发现数独无解。
以下为解数独的伪代码:
伪代码
该案例参考了leetcode网站题库,感兴趣的朋友可以去尝试求解。