数独游戏规则
是一种源自18世纪末瑞士的数学智力拼图游戏。拼图是九宫格(即3格宽×3格高)的正方形状,每一格又细分为一个九宫格。在每一个小九宫格中,分别填上1至9的数字,让整个大九宫格每一列、每一行的数字都不重复。
数独的玩法逻辑简单,数字排列方式千变万化。不少教育者认为数独是锻炼脑筋的好方法。
计算机算法简介
本文所讨论的算法是一种通用算法,虽然不能说是最快的算法,但却可以求解所有的数独游戏。
算法准备:
1、一个可能性:表示某个格子可能填写的数字。
2、可能性数目:表示某个格子可能性的数量。为0表示已经确定。
3、区域标志:表示某个格子所在区域(小九宫)的ID,所有区域标志都是预定义的。
4、确定数量:表示所有数字已经确定的格子的数量,为81时则表示已经找到解。
5、整个九宫格用三个矩阵表示:可能性矩阵,数目矩阵,区域标志矩阵
算法的基本思想:
步骤1、将所有未确定的格子的可能性定义为0xFFFF(即所有数字都可能),可能数目为9。
步骤2、寻找所有确定的格子A(可能数目为0),在所有与A同行、同列和同区域的未确定的格子的可能性中减去与A相同的可能性。例如:A确定为9,则与A同行、同列和同区域(区域标志相同)的未确定的格子的可能性与0xFEFF按位与(除去可能性9),并将其可能性数目减少。
在除去可能性的过程中如果发现某个格子B的可能性数目由1减小为0,说明B和A只能取相同的数字,这可能是题目本身无解引起,也肯能是由于步骤3中搜索方向不对引起的,可认为此方向的搜索无解,退出这