昨天有人问我数独【其中一道题已经硬编码在代码中了】 :-)
以前的C++的版本就有不下5个,VB页有不下5个,然后就一时兴起,练练java顺便写一下
以前的算法中的区块排除在这次的java实现中没有
写了之后感受就是 不用自己管理 new delete 好爽,但 没有指针的*
看着好不习惯,以及使用指针无法像C++那么暴力,写的时候算法时间 空间复杂程度也估计不好。
以及 以前的C++ VB实现的都没文档,所以还是打算写个 假装像一个文档的东西
Main.java
里面 是对一个标准的数独的使用demo,只修改Main.java类似的支持4×4,16×16,25×25的数独
StandardSudoku.java
里面 是把标准数独用抽象解决器表达,修改该类 类似可以支持 武士数独等异形数独,同时可以对多解数独(我是拒绝这个词的)进行解答(caculate
的参数为答案上限,负值表示所有)。
sudokuabstractsolver.java
里面 是算法核心,感觉还有修改的空间 比如加上区块,但暂时并没想好如何在 抽象的结构中表示区块。
关于Exception
做得很简陋 无限向上抛出:-)