Dim i, j, k As Integer
Dim a()
Private Sub cmdend_Click()
End
End Sub
Private Sub cmdstart_Click()
a = Array(20, 10, 2, 8, 22, 16, 4, 10, 6, 14, 20, 10)
k = 0
Tmr1.Enabled = True
pic1.Print "初始值:";
For i = 1 To 10
pic1.Print a(i);
Next i
Print
End Sub
Private Sub Tmr1_Timer()
k = k + 1
j = 0
a(11) = a(1)
pic1.Print
For i = 1 To 10
a(i) = (a(i) + a(i + 1)) / 2
If a(i) Mod 2 = 1 Then a(i) = a(i) + 1
pic1.Print Tab(i * 4); a(i);
If i = 10 Then pic1.Print "(第" & k & "次)";
Next i
a(11) = a(1)
For i = 1 To 10
If a(i) = a(i + 1) Then j = j + 1
Next i
If j = 10 Then
pic1.Print
pic1.Print "经过" & k; "次后,10个小孩手中的糖块数一样。"
pic1.Print "每人手中各有" & a(1) & "块糖。"
Tmr1.Enabled = False
End If
If k > 3000 Then
Tmr1.Enabled = False
MsgBox "已分3000次糖果,还没有得到答案,估计算法有误。", vbOKOnly, "提示"
End If
End Sub
Dim a()
Private Sub cmdend_Click()

End
End Sub
Private Sub cmdstart_Click()
a = Array(20, 10, 2, 8, 22, 16, 4, 10, 6, 14, 20, 10)
k = 0
Tmr1.Enabled = True
pic1.Print "初始值:";
For i = 1 To 10
pic1.Print a(i);
Next i
End Sub
Private Sub Tmr1_Timer()
k = k + 1
j = 0
a(11) = a(1)
pic1.Print
For i = 1 To 10
a(i) = (a(i) + a(i + 1)) / 2
If a(i) Mod 2 = 1 Then a(i) = a(i) + 1
pic1.Print Tab(i * 4); a(i);
If i = 10 Then pic1.Print "(第" & k & "次)";
Next i
a(11) = a(1)
For i = 1 To 10
If a(i) = a(i + 1) Then j = j + 1
Next i
If j = 10 Then
pic1.Print
pic1.Print "经过" & k; "次后,10个小孩手中的糖块数一样。"
pic1.Print "每人手中各有" & a(1) & "块糖。"
Tmr1.Enabled = False
End If
If k > 3000 Then
Tmr1.Enabled = False
MsgBox "已分3000次糖果,还没有得到答案,估计算法有误。", vbOKOnly, "提示"
End If
End Sub
该博客介绍了一个简单的糖果分配算法实现过程,通过不断调整10个孩子手中的糖果数量来达到最终平均分配的目标。每轮分配中,每个孩子的糖果数变为相邻两个孩子糖果数的平均值,并在奇数时加一。

被折叠的 条评论
为什么被折叠?



