A.①②③④⑤⑥ | B.③④⑥ | C.②③④⑤⑥ | D.②③④⑥ |
房号 | i | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 |
入数 | b(i) | 2 | 0 | 2 | 2 | 0 | 1 | 2 | 1 | 2 | 1 | 0 | 2 | 1 | 0 | 2 | 2 |
方案 | 房号范围 | 区间长度 | 房间数目 | 备注 | 方案 | 房号范围 | 区间长度 | 房间数目 | 备注 |
方案1 | 1 ~ 6 | 6 | 4 |
| 方案6 | 8~13 | 6 | 5 | |
方案2 | 3 ~ 7 | 5 | 4 |
| 方案7 | 9~15 | 7 | 4 | 人数>7,取消10号房 |
方案3 | 4 ~ 9 | 6 | 4 | 人数>7 取消6号单人间 | 方案8 | 10~16 | 7 | 4 | 人数>7,取消13号房 |
方案4 | 6~10 | 5 | 5 | | 方案9 | 12~16 | 5 | 4 | |
方案5 | 7~12 | 7 | 4 | 人数>7,取消8号单人间 |
|
|
|
| |
Dim s As Integer, d As Integer,f as integer, num As Integer, roomnum As Integer
Dim minnum as integer 'minnum 变量存储当前最优方案中的预订房间数目
Dim mindist As Integer 'mindist 存储当前的最小分布区间长度
'所有房间的可入住人数按房间号码顺序存储到数组b中并显示在list1中,代码略
num = Val(Text1.Text)
minnum = n: mindist = n :s = 0 : start = 0: f = 0: pos = 0
For i = 1 To n
If b(i) <> 0 Then
j = i: s = 0: roomnum = 0
Do While s < num And j <= n
s = s + b(j)
If b(j) > 0 Then roomnum = roomnum + 1
j = j + 1
Loop
d = ___
If s = num Then
If d < mindist Or _____ Then
start = i: mindist = d: minnum = roomnum: pos = 0
End If
ElseIf s > num Then '若可入住人数超出,在当前区间内所选房间中取消1个单人间
f = find1(i + 1, j - 2)
If f > 0 Then
If d < mindist Or d = mindist And roomnum-1 < minnum Then
start = i: mindist = d: minnum = roomnum - 1: pos = f
End If
End If
End IfEnd If
Next i
If start = 0 Then
Label2.Caption = "房间数量不足"
Else
List2.AddItem "预订房间:" + Str(minnum) + "间"
For i = start To_____
If b(i) > 0 And i <> pos Then
List2.AddItem "房间号:" + Str(i) + ",入住人数:" + Str(b(i))
End If
Next i
End If
End Submaxg = -1
For i = l To nmaxg = g:p=l
__List2. Addltcm“第”+Str(ans(i))+“组,成绩:”+Str(maxg)
Next iDim i As Integer,k As Inteser
For i = 0 To me(i)=0
Next iFor i=(w-l)*m+l To w *m
k=a(i)If k > m Then __
e(k)=e(k)+1Do White e(k)< k And k>0
k=k-1__
LoopPrivate Sub Form_Load()
’读取n个人进、出馆的时间,存入数组d并显示在列表框List1中,代码略Dim i As Integer,j As Integer,k As Integer,sp As Integer
Dim i As Integer,cnt As Integer,mts As Integer,sum As Integer
Dim s As String
’提取每个人的进,出馆时间,分别加上IN、OUT标记后存入数组a
For i = l To nsp =Val(Text1,Text)
t=-1:cnt=0:sum=0
For i = 1 To 2 * n
mts=Val(Mid(a(i),1,2))*60+Val(Mid(a(i),4,2))
If Mid(a(i),6,2)=“IN” Then cnt = cnt + 1 Else __End If
Next iIf___Then
tmp=xm(j):xm(j)=xm(j+1):xm(j+1)=tmpEnd If
Next j'人员编号和笔试成绩分别存储到数组变量 id 和 score 中,应聘总人数存储在变量n中面试比例在文本框Text1中输入,所输入比例值必须使面试人数大于1且小于n,代码略。
Private Sub Command1_Click()
Dim i As Integer, j As Integer, st As String, t As Integer
For i = 1 To n - 1 '按笔试成绩从高到低排序
k = i
For j = i + 1 To n
If ___ Then k = j
Next j
If k <> i Then
st = id(k): id(k) = id(i): id(i) = st
t = score(k): score(k) = score(i): score(i) = t
End If
Next i
num =___
j=num+1
Do while j<=n
If Then Exit Do
j=j+1
Loop
For k=_____
List2.AddItem Str(k) + " " + id(k) + " " + Str(score(k))
Next k
End Sub