房号 | 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)从房间号码分布区间长度值最小原则,选择方案2、4、9
(2)分布区间长度值相同时,选择预订房间数目最小的,因此选择方案2、9
(3)所有可选方案中,优先选择最先成立的(起始房号最小的)方案,最终选择方案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号单人间 |
|
|
|
| |
(1)如下图所示16个房间,当入住人数为5人时,预订房间号是:_____________

(2)请在划线处填写适当的代码
Const n = 16 '假设酒店总房间数为16
Dim b(1 To n) As Integer 'b 数组按房间号顺序存储各房间可入住人数
Function find1(x, y) As Integer
'函数 find1(x,y)的作用是从 b(x)到 b(y)中找到值为1的数组变量的下标,若找不到,返回值为0
End Function
Private Sub Command1_Click()
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 Sub
同类型试题

y = sin x, x∈R, y∈[–1,1],周期为2π,函数图像以 x = (π/2) + kπ 为对称轴
y = arcsin x, x∈[–1,1], y∈[–π/2,π/2]
sin x = 0 ←→ arcsin x = 0
sin x = 1/2 ←→ arcsin x = π/6
sin x = √2/2 ←→ arcsin x = π/4
sin x = 1 ←→ arcsin x = π/2


y = sin x, x∈R, y∈[–1,1],周期为2π,函数图像以 x = (π/2) + kπ 为对称轴
y = arcsin x, x∈[–1,1], y∈[–π/2,π/2]
sin x = 0 ←→ arcsin x = 0
sin x = 1/2 ←→ arcsin x = π/6
sin x = √2/2 ←→ arcsin x = π/4
sin x = 1 ←→ arcsin x = π/2

