|
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用 · 内置多项VBA编程加强工具 ★ 免费下载 ★ ★ 使用手册★
本帖最后由 flyge 于 2018-5-9 03:41 编辑
数独解题v.201805061129 v后面是时间增加了第二种递归解法,就是自己调用自己后附代码,思路仅供参考
=======================================
2018年5月9日更新为
数独.v.201805090242
v后面是时间
非常抱歉,之前的v.201805061129 递归有问题
修改了,第二种方法加入了递归的层级控制,在时间允许范围内像二叉树那样从1层往n层做尝试。
解法说明一下,我是在玩全民数独时,发现一些规律,
1.用一个有的来排除别的格子里的可能值
2.横竖宫三种情况单独的某种情况下,n格中只有n种数字的话除了这n格外其他的9-n格中不应该再有这n个数字的任何一个,(我只做了n=2的情况)
3.横宫 或 竖宫 ,交叉有3格,拿横宫交叉情况举例,如果有某个数只出现在 横的情况中的3格中,那么这个数字也只能在宫的情况中的这3格中,因此要消除宫的其他6格中的这个数字。(哈哈哈,这个也没做)
4.接下来就猜了,找个只剩下2个可能性的,先猜一个,重复上面的,如果错了(最后会出现重复)就换另外的。没错就继续,如果一开始没错又继续不下去了就退回来换一个,一般换一个算下来就会出错,这样就退回去换回来,这是手工解的时候用的方法,能解游戏的最高级别的数独。
vba里先用1.2.的方法解,再在4中暴力方法,4.中用了1.2.的方法,未解就调用自己的递归方法形成二叉树的样子,然后控制一下递归的层级和整个的用时。
补充内容 (2018-5-14 20:46):
更新:数独.v.201805142006
补充内容 (2018-5-16 21:39):
最新版本是数独.v.201805160919 |
|