前言
周末两天,闲来无事,于是花了半天把自己很久就想研究的数独求解进行了算法实现。
初级玩法
首先看一下数独
屏幕快照 2018-03-25 下午6.30.52.png
数独规则
数独的规则比较简单:
每一行包括了1到9的数字,并且不能重复。
每一列包括了1到9的数字,并且不能重复。
每一组包括了1到9的数字,并且不能重复。
玩数独求解的流程
步骤一:从上到下,从左到右选择一个空单元。
步骤二: 根据这个单元所在的行、列、组,求出这个单元可能的解。
步骤三:随机抽取一个未论证的解作为单元的解进行填入,进行步骤一。
步骤四:如果步骤三中这个单元的所有未论证的解为空,则说明上一次随机填入有误。机型步骤五。
步骤五:退到上一个单元,将上一次随机填入解从未论证随机解中删除,进行步骤三。
步骤六:如果步骤二中这个单元的所有可能解为空,则说明上一次随机填入有误,进行步骤五。
步骤七:如果发现已经无法选择单元,即单元已经填满,说明完成解数独。
流程图:
shuduprocess.jpg
总体而言,整个过程是一个选择空单元,求合适解,选择未论证解,论证,论证之后再返回的过程。