该代码完成了数独的求解工作。经我自己测试,凡是有解的数独,都能很快运算出来。
传说中世界上最难的数独,使用该程序,
不到
50
毫秒就能轻松解决。
普通数独,
在
20
毫秒
之内就能解决。
本代码能判断给定的数独是否有解。注释很详细,我相信学过
java
的人都能看懂。
本人自己觉得代码中用到的几个数组比较巧妙,希望读者能领悟并提出意见。
该代码是朋友玩数独的时候,见她比较痛苦,
于是想写个程序帮助他。
额,
不过鉴于计
算机如此快的运算速度。她半天解不出来的数独如果被我不到
30
毫秒就解决的话,我想,
她的积极性会严重受挫的。所以,我正在考虑要不要把这个代码推荐给她。
我保证该代码能运行。如果下载后不能运行,可以加
Q
与我联系。正常上班时间请勿
扰。
Q
:
675624979
废话少说,来讲讲这个数独。我采用
java
编写的,总共包含
3
个类。
1
、
sudukuMain
这个类是主类,负责调度。
2
、
sudokuTask
这个是任务类,有着一些数独的基本信息。规定了一些常用的方法,数据结构,供
其他子类使用。
3
、
Exhaustive
这个是真正实现数独运算的类,继承了
sudokuTask
任务,实现
sudokuTask
中的方
法。本来
Exhaustive
是穷举的意思。当初编码的意图很明显,是想通过多种方法来
实现的,穷举是其中一种。但是当穷举实现之后,我懒得新写一个类了,于是就在
穷举上增加了些东西
后面我会附上这三个类的代码,但是我得先讲讲这三个类的结构。
代码都放在
sudoku
中,
sudukuMain.java
放在
sudoku
文件夹中。如图所示:
sudokuTask
中,包含
sudokuTask.java
类和文件夹
allMethod
allMethod
中,包含
Exhaustive.java
类