|
AVG谜题探索(08)------南茜·朱尔23水边の影中数独(Sudoku)解谜
8 ?4 m% _ }# v% j9 E谜题:数独 / h* l( N; b- C8 v2 V/ O
) G; `9 i' m0 }- v数独是一种源自18世纪末的瑞士,后在美国发展、并在日本得以发扬光大的数学智力拼图游戏。拼图是九宫格(即3格宽×3格高)的正方形状,每一格又细分为一个九宫格。在每一个小九宫格中,分别填上1至9的数字,让整个大九宫格每一列、每一行的数字都不重复。
- t F N4 @# J# y
$ q# ?9 ]( ?$ u9 ^" i) Y0 f数独的基础是数字魔方,它的解也一定是数字魔方。制作一个数独,便是使用一个一般的数字魔方,盖住部分数字,成为一个拥有唯一解的数独。 : k7 S; m8 y3 \# _
% ?, {: |9 W4 e
数独前身为“九宫格”,最早起源于中国。数千年前,我们的祖先就发明了洛书,其特点较之现在的数独更为复杂,要求纵向、横向、斜向上的三个数字之和等于15,而非简单的九个数字不能重复。中国古籍《易经》中的“九宫图”也源于此,故称“洛书九宫图”。而“九宫”之名也因《易经》在中华文化发展史上的重要地位而保存、沿用至今。 现在已有多种手机装有数独游戏。
4 a0 n! L# R6 S) c" \
1 I1 ~ C0 } Z V下面是我自己用C编写的一个解数独程序,这个程序只实现了一些简单的算法,因为我对数独的研究也只是皮毛, 6 x0 |8 v7 w0 T" O
程序的流程基本上是这样的,首先对9个数字建立9个9*9的数组,对9个宫格建立9个3*3的数组,对9行建立一个9*9的数组,对9列建立一个9*9的数组,
: I8 }$ L1 U7 n# ~5 T, b3 e我使用非常基础的方法读入用户输入的数据,然后进行各种排除,当得到一个数字后进行一次循环,进一步排除。
! ^6 z$ [( O. Z. P! e- `2 X$ v) M, h( K! u" V9 [) x* z
该程序只能解决一些简单数独,多解的数独无法求解,复杂数独只会给出接近终解的解,原码就不发给大家了,程序是下面这个,欢迎大家讨论 . b+ }8 d; q# c, U
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
|