比如有7个选手,他们的等级分别是30,17,26,41,19,38,18,要进行3场比赛。最好的安排是选手2对选手7,选手7对选手5,选手6对选手4。此时等级差的总和等于(18-17)+(19-18)+(41-38)=5达到最小。
窗体form1的运行界面如下图所示,用户在文本框Text1中输入各位选手的等级(以逗号分隔),在文本框Text2中输人要对弈的场数k,单击计算按钮Commmand1,在文本框Text3中显示最小等级差总和。程序运行界面如图所示。
Dim a(0 To 1000) As Integer
Dim b(0 To 1000) As Integer
Private Sub Command1_ Click()
Sum=0
k = Val(Text2. Text)
s =Text1. Text
cnt =1
For i=1 To Len(s)
c=mid(s, i, 1)
If c="," Then cnt=cnt+1 Else
Next i
For i=1 To cnt-1
For j=1 To cnt-i
If Then
t = a(j): a(j) = a(j+ 1): a(j+1)= t
End If
Next j
Next i
'计算出各等级选手之间差值
For i=1To cnt- 1
b(i)=a(i+1)-a(i)
Next i
For i=1 To k
Min=i
If b(j) < b(Min) Then Min = j
Next j
Sum = Sum + b(Min)
Next i
Text3. Text = Str(Sum)
End Sub