
正文
数独vb.net 数独技巧
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
谁能告诉我数独游戏的编程思维啊
一、解数独
1、标记
2、利用各种方法减少标记数量数独vb.net,例如显性数对删减法、隐形唯一数法、隐形数对法、区域删减法、区块删减法、三四链数删减法等等
3、填充数独vb.net,利用唯一值法数独vb.net,如果那个标记中只有一个可填了,这就是结果了。
4、假设法,如果各种方法(至少数独vb.net你知道的)都用了还是没有唯一数,那只能假设了,按一定顺序某个单元格标记中假设一个就是要填充的数,然后重复上面的步骤,如果得到无解(就是出现某个单元格的没有可填的数),那就退回,换一个数继续。(一般这个过程用递归完成)
二、如何生成题目
会解数独后,生成就不是问题了,我的方法是分为两步首先随机填充1-9到第一行,然后用上诉方法产生一个解。再次,随机一个一个数删除,每删除一个数重复上诉方法,看看是否是唯一解,如果是继续删除(不是就恢复,删其它的),直到达到一定目的为止。这样就产生一个数独题目。
相关问答
Q1: vb写的数独查找答案的源代码,最好是vb6
已发送,
以下是递归数独vb.net的主要函数
Function TianChong1_1DA(x As Long, y As Long) As Boolean
Dim tmp As Long, JiXu As Boolean
For m = 1 To 9
If fDA(x, y, m) = 0 Then
If fDA(x, y, 0) = 0 Then fDA(x, y, 0) = m
TCJishuDA = TCJishuDA + 1
ReDim Preserve QingKong(TCJishuDA)
tmp = TianChongDA
If tmp 1 And tmp 2 Then
TianChong1_1DA tmp Mod 10, Int(tmp / 10)
End If
If jieJS 0 Then TianChong1_1DA = True
If yuanSSJ(x, y) = 1 Then Exit Function
For n = 1 To 9
For nn1 = 1 To 9
For nn = 1 To 9
fDA(n, nn, nn1) = 0
Next
Next
Next
If fDA(x, y, 0) = m Then fDA(x, y, 0) = 0
QingKong_1DA (TCJishuDA)
TCJishuDA = TCJishuDA - 1
ReDim Preserve QingKong(TCJishuDA)
TCBiaojiDA
End If
Next
End Function
数独vb.net你也可以参看数独vb.net我的空间,里面一个例子
Q2: 如何生成难度不同的数独
生成不同难度的数独这儿代码写不下。。。
给出链接里,第二个大程序就是生成不同难度的,不过稍微有一些编译上的错误,有两个int函数没有返回值,改为void类型就可以运行了。
看到1300多行的生成代码,你还有兴趣继续看么?
Q3: 用vb怎么做数独程序
你把label控件设为控件数组:Label1()
Private Sub Command1_Click()
Dim a(9) As Integer, i As Integer
Do While '这里你的条件实在看不懂,如果对a()没有限制,就把Do While 和Loop删掉
Randomize
For i = 1 To 9
a(i)=Int(Rnd*3)+1
Next i
Loop
For i=1 to 9
Label1(i).Caption=a(i)
Next i
End Sub
Q4: 如何用VB做九宫格小游戏
数独初盘最少可以有17个数,最多32个,9*9的格子
随机取,然后行和列上遍历不能出现重复数字,就ok了
首先,请楼主确认您说的九宫格是
各项之和15呢
还是各行各列0-9各出现一次的数独游戏,这是2种不同的算法,关系到后面设计过程,一定要说清楚。
其次,因为不确定算法,我只给出搭建界面的过程:
建立个form
拖9*9个label
搭建成游戏需要的样子,这个可以参考别人的界面,一个command
一个分数计算显示用的Label。
等待楼主交代详细。。。
Q5: vb.net窗体绘图问题,Form的Resize事件不能调用以下过程,求解!谢谢
没有问题,可以执行,您是想做下数独吗?好像是数独表格,哈哈
关于数独vb.net和数独技巧的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。







