编程学习biancheng.45soft.com 本站提供了各种在线教程和资料,供大家学习与参考.
编程学习
当前位置: 主页 > VB6 > 控制结构 > VB6 控制结构 穷举法

VB6 控制结构 穷举法

“穷举法”也称为“枚举法”或“试凑法”, 即将可能出现的各种情况一一测试,判断是否满足条件,一般采用循环来实现。


[例4.16] 百元买百鸡问题。假定小鸡每只5角,公鸡每只2元,母鸡每只3元。现在有100元钱要求买100只鸡,编程列出所有可能的购鸡方案。

设母鸡、公鸡、小鸡各为x、y、z只,根据题目要求,列出方程为:

x+y+z=100
3x+2y+0.5z=100

三个未知数,两个方程,此题有若干个解。


解决此类问题采用“试凑法”,把每一种情况都考虑到。


方法一:最简单三个未知数利用三重循环来实现。

方法二:从三个未知数的关系,利用两重循环来实现。


[例4.16]

Private Sub Form_Load()
    Form2.Caption = "母鸡、公鸡、小鸡个数组合方法一(单击)"
    Form3.Caption = "母鸡、公鸡、小鸡个数组合。方法2"
    Form3.Left = (Screen.Width - Form3.Width) / 2
    Form3.Top = (Screen.Height - Form3.Height) / 2
    Load(Form3)
    Form3.Show()
End Sub

Private Sub Picture1_Click()
    Dim X%, Y%, z%, t1 As Date, t2 As Date
    Picture1.Cls() '方法一
    t1 = Time
    For X = 0 To 100
        For Y = 0 To 100
            For z = 0 To 100
                If X + Y + z = 100 And 3 * X + 2 * Y _
                  + 0.5 * z = 100 Then
        Me.Picture1.Print "母鸡="; X, "公鸡="; Y, "小鸡="; z
                End If
            Next z
        Next Y
    Next X
    t2 = Time
Picture1.Print "方法一用去机时"; DateDiff("s", t1, t2); "秒"

    Form3.Picture1.Cls()
    t1 = Time
    For X = 0 To 33
        For Y = 0 To 50
            If 3 * X + 2 * Y + 0.5 * (100 - X - Y) = 100 Then
      Form3.Picture1.Print "母鸡="; X, "公鸡="; Y, "小鸡="; 100 - X - Y
            End If
        Next Y
    Next X
    t2 = Time
Form3.Picture1.Print "方法二用去机时"; DateDiff("s", t1, t2); "秒"
End Sub



编程学习 VB6 控制结构 穷举法 转载请保留此行.谢谢.

VB6