189 8069 5689

程序解数独vb.net vb数独编程

用VBA解数独程序

为方便起见,建名称“数独盘”和“可选数”,分别代表B2:J10和B12:J20两个区域。用如下VBA程序清空初盘:Sub 清空初盘()

10年积累的成都网站建设、网站建设经验,可以快速应对客户对网站的新想法和需求。提供各种问题对应的解决方案。让选择我们的客户得到更好、更有力的网络服务。我虽然不认识你,你也不认识我。但先网站策划后付款的网站建设流程,更有南县免费网站建设让你可以放心的选择与我们合作。

Dim rag As Range

For Each rag In Range("数独盘")

rag.ClearContents

rag.Font.Bold = False

Next

End Sub

用如下VBA程序把初盘“粗体化”:Sub 粗体初盘()

Dim rag As Range

For Each rag In Range("数独盘")

If rag.Value = "" Then

rag.Font.Bold = False

Else

rag.Font.Bold = True

End If

Next

End Sub为建“可选数”表,先用如下程序语句清空“可选数”区域:Range("可选数").ClearContents '清空可选数

以下程序段,作为解数独的初始化工作的一部分完成如下工作:在“数独盘”区域仅保留粗体的已知数作为初盘。在“可选数”区域的与“数独盘”已知数对应的单元格,抄录已知数,其他单元格取“123456789”。程序如下:For Each rag In Range("可选数")

If rag.Offset(-10, 0).Font.Bold Then '“数独盘”中用粗体字表示已知数

rag.Value = rag.Offset(-10, 0).Value '把“数独盘”中的已知数抄录到对应的“可选数”区域中的相应位置

Else

rag.Value = "123456789" '“数独盘”中的未知数在“可选数”区域中的相应位置设置成“123456789”

rag.Offset(-10, 0).Value = "" '“数独盘”中的未知数用空格表示

End If

Next

接下来的初始化工作就是建立对应于初盘的可选数表。这部分工作和以后要讲的用“排除法”解数独题有相似之处。这些相似的工作用“处理确定数”子程序来完成。现在在“可选数”区域,寻找长度为1的数作为确定数,把该单元格置为空格,记下该单元格的行号和列号,由“处理确定数”子程序作相应处理。程序如下:For Each rag In Range("可选数")

If Len(rag.Value) = 1 Then

qds = rag.Value '已知数作为“确定数”

rag.Value = "" '对应于“确定数”在“可选数”区域设为空格,表示无别的数可选

i% = rag.Row - Range("可选数").Row + 1 '计算“确定数”在“可选数”区域的行号

j% = rag.Column - Range("可选数").Column + 1 '计算“确定数”在“可选数”区域的列号

Call 处理确定数(i%, j%, qds)

End If

Next

待续

用VB设计一个可以判断数独是否正确的程序

可以用二维数组将填入后的九宫格数子储存,然后在判断行是否满足要求,列是否满足要求,每个格是否满足要求。

用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

我想用vb做一个数独程序。但是在编写 数 在这一行和这一列的唯一性时,想了很多办法,总是做不到唯一性

虽然我不会VB,但我用C语言自己编出过一个解数独的程序

你要保证一行的不重复性的话可以这样:一行所有的数字乘起来是362880,加起来是45

你要做一个数独游戏的话,我用的随机出一个每行每列不重复的数独,但解一下看看解是不是唯一

我刚大一,水平有限,只能帮你到这里了,有问题再追问吧


分享文章:程序解数独vb.net vb数独编程
文章链接:http://cdxtjz.com/article/dosejdp.html

其他资讯