#大有学问#

一、数独规则

解数独大家都玩过,它的规则是:

1.数字1-9在每一行只能出现一次。

2.数字1-9在每一列只能出现一次。

3.数字1-9 在每一个粗实线围成的3×3方格中 只能出现一次。

下图就是一个未解答的数独

复杂的数独怎么解(你知道计算机是如何解数独的吗)(1)

数独


二、计算机求解数独思路

那如何解答数独呢?下图为解答的思路图

复杂的数独怎么解(你知道计算机是如何解数独的吗)(2)

思路图

解答的思路是:

1.选择一个未填空的方格(可以按照从左到右,从上到下的顺序选择),如果发现没有未填空的方格,则说明数独已解答。

2.在选定的方格中尝试填入数字1-9,分别检查填入的数字是否违反数独的规则(见上),如果不违反规则,继续执行1。如果违反规则,就将填入的数字清除,继续选择其他数字填入该方格进行尝试。如果发现该方格无法填入1-9的任何数字,则说明该数独无解。

实例讲解:

思路看起来有点绕,我们拿实例讲解。案例中,首先我们选择第一行第三列的格子,尝试填入数字1。由检查得,它没有违反数独规则。因此,继续选择第一行第四列的格子,尝试填入数字1,发现这违反了数独规则1(数字1-9在每一行只能出现一次),于是删除该格填入的数字。再次尝试在第一行第四列的格子中填入数字2,由检查得,它没有违反数独规则。可以继续选择新的格子尝试填入数字。如此循环,直到找出数独的解或者发现数独无解。

以下为解数独的伪代码

复杂的数独怎么解(你知道计算机是如何解数独的吗)(3)

伪代码

该案例参考了leetcode网站题库,感兴趣的朋友可以去力扣尝试求解。

,