学进去-教育应平等而普惠
试题
类型:操作题
难度系数:0.15
所属科目:高中信息技术
疫情防控期间,某工厂为了将流水线上已生产的口罩及时装箱,并尽量分配给更多的疫情地区,需要设计一个程序实现自动化装箱。装箱要求为:流水线上生产的每包口罩数量有可能不同,装入箱子的口罩必须为流水线上连续的若干包,每箱内的口罩数量必须相同,在已知每包口罩数量和口罩总包数的前提下,装尽可能多的箱子。
例1:某流水线上有8包口罩,每包口罩的数量和装箱安排如下表:

序号

1

2

3

4

5

6

7

8

数量

12

3

9

6

6

9

3

12

箱号(方案1)

1

2

2

3

3

4

4

5

箱号(方案2)

1

1

2

2

3

3

4

4

箱号(方案3)

1

1

1

1

2

2

2

2

 

 

在上述情况下,有3种分箱方案,方案1为最优方案。
例2:某流水线上有8包口罩,每包口罩的数量和装箱安排如下表:

序号

1

2

3

4

5

6

7

8

数量

1

3

5

7

9

11

13

15

 

 

在上述情况下,没有符合要求的装箱方案。

 按照上述要求,编写一个VB程序,功能如下:窗体加载时,读取流水线上每包口罩的数量,并将结果显示在列表框List1中,点击“装箱”按钮后,在文本框Text1中输出分箱结果,若存在装箱方案,则输出最多的装箱数,否则输出“无方案”。程序界面如图所示。


(1)假如流水线上生产的每包口罩数量依次为“16,5,3,8,7,9”,按照上述装箱要求,则装箱结果为____。 
(2)实现上述功能的VB程序如下,请在划线处填入合适的代码。
Dim sum(0 To 1000) As Integer 'sum(m)存储前m包口罩的数量
Dim a(0 To 1000) As Integer
Dim n As Integer, i As Integer, pos As Integer 'n,i,pos为全局变量,i表示前i包口罩放在第1个箱子
Private Sub Form_Load()

List1.clear

'读取流水线上口罩包数n和每包口罩数,存入数组a中,并在List1中显示,代码略

End Sub
Private Sub Command1_Click()

 Dim s As String

 Dim tot As Integer, ans As Integer, cur As Integer

 For i = 1 To n

  sum(i) = sum(i - 1) + a(i)

 Next i

 ans = 0

 For i = 1 To n

  cur = i     '当前分箱最后一包口罩的序号

      _____

  pos = i + 1

  Do While pos <= n

    If find(pos, n, cur) Then    '寻找下一段符合方案的口罩数量和

      cur = pos

      tot = tot + 1

      Do While sum(pos) = sum(pos + 1) '若这包口罩数量为0则直接跳过

        pos = pos + 1

        cur = cur + 1

      Loop

      Else

        Exit For

      End If

      pos = pos + 1

    Loop

    If tot > 1 And     ____ Then  

      ans = tot

      Exit For

    End If

  Next i

  If ans > 0 Then

    Text1.Text = Str(ans)

  Else

    Text1.Text = "无方案"

  End If

End Sub

 

Function find(L As Integer, R As Integer, k As Integer) As Boolean

  Dim m As Integer, t As Integer

  find = False

  Do While L <= R

    m = (L + R) \ 2

    t = _____

    If t = sum(i) Then

      pos = m

      find = True

      Exit Function

    ElseIf t < sum(i) Then

      L = m + 1

    Else

      R = m - 1

    End If

  Loop

End Function

编辑解析赚收入
收藏
|
有奖纠错

同类型试题

优质答疑

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

用户名称
2019-09-19

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

用户名称
2019-09-19
我要答疑
编写解析
解析:

奖学金将在审核通过后自动发放到帐

提交
我要答疑
我要答疑:
提交