自动计算数独VB源码

时间:2018-07-18 06:25:21
【文件属性】:

文件名称:自动计算数独VB源码

文件大小:58KB

文件格式:RAR

更新时间:2018-07-18 06:25:21

数独VB源码

数独算法说明:用三个二维数组记录数独每个点的状态,SD(i, j)显示数值,也是真实数值(1到9)。ST(i, j)状态,1可由用户输入,2是题目给定的,不能改。SY(i, j)字符串,记录每个点中可能的值。 1、在进行自动计算时,只计算ST(i, j)为1的点,首先将所有状态为1的点的SY(i, j)值全部设为"123456789",SD(i, j)值全部设为0 2、逐点扫描,找到一个点,然后将该点所在的行、列、区域中已存在的SD(x, y)值从SY(i, j)中删除,因为数独规则是一个数值,在行、列、区域都不重复。 3、经第二步处理后,SY(i, j)为空,说明前面的步骤出错,SY(i, j)值为一位数字,就说明该点的值是唯一的,可以确定了。重复第2步。 4、剩余的SY(i, j)中字符串长度最少也是两位,或更多位数。随机从这些两位数的SY(i, j)中选取一个点。取其中的一位确定为该点的值后,重复第2步。如果错误遇错,则重复执行第4步。直到所有点都被确定。 注意:第2步是需要多次重复执行的,所以可用递归函数完成。如果执行结果出现错误(某数出现重复,或某点无值),需要对该过程所执行的所有操作进行回退。 第4步也是需要重复执行的。本程序用Goto跳转方式实现多次执行。 简单的数独,要么所有的点都具有唯一值,第1步执行完成后,就已全部完成。或者具有多个解,随意猜测一个二位数的SY(i, j)的值都能成功。 难的数独是:可唯一确定的点很少,大部分点都有两种或多种可能的值,但最终正确答案只有一种或很少种解。 软件在自动计算过程中,具有很大的偶然性,对于骨灰级的数独题目在计算过程中,时间短的可能不到1秒就能完成,长的可能要几分钟,需要将各种可能性都测试一遍才会有结果。 只要题目正确,多计算几次就能得到答案。 软件是VB6.0开发的,只用到MSHFLXGD控件用于显示。程序只处理各点有两种可能值的情况,对只存在三种可能值的情况未进一步处理,该情况非常极端了。 软件可以保存布局,可选择预存的关数,退出时自动保存界面状态。程序在用到配置文件枚举方法、表格编辑、递归函数等,可作入门级学习研究。 软件可以进一步修改拓展,增加对数独题目难容度的判断等功能。 软件中自带网上下载的200个数独题目。


【文件预览】:
FrmMain.frm
FrmMain.frx
Shudu.ico
FrmSave.frx
FrmSave.frm
Shudu.vbp
Shudu.exe
Shudu.dat
Shudu.vbw

网友评论