⑴货物逐个尝试放入,搜索场地矩阵(从左到右,从上到下),若某块区域能放下该货物,则标记这些相应位置为货物编号,然后返回左上角检测下一货物。
⑵搜索时,若右侧剩余列小于货物边长,则跳转到下一行,若下方剩余行小于货物边长,则直接返回检测下一货物,直到所有货物检测完毕。
小武同学根据上述算法设计了VB程序。程序运行,在列表框list1降序输出货物规格,点击“存放”按钮command1,在列表框list2输出摆放完成的场地矩阵。
算法的VB程序如下,回答下列问题。
Dim hw(1 To 9) As Integer '存储正方形货物的边长
Dim cd(1 To 100) As Integer '场地是边长为10的正方形
Private Sub Command2_Click()
Dim i As Integer, j As Integer, wz As Integer, s As String
For i = 1 To 9
j = 1
Do While (10 - (j - 1) \ 10) >= hw(i) '下方空间足够
If ① = False Then '从当前位置开始能否放下
j = j + 1
Else
'把相关位置标记为i,并处理下一货物,代码略
End If
If 10 - (j - 1) Mod 10 < hw(i) Then ‘右侧空间不足
②
EndIf
Loop
Next i
‘在列表框list2输出整个场地放好货物之后的矩阵图,代码略
End Sub
Function pd(start As Integer, bc As Integer) As Boolean
Dim i As Integer, wz As Integer
pd = True: wz = start
Do While wz <= start + 11* (bc - 1) And wz <= 100
If ③ Then
pd = False
Exit Function
ElseIf (wz - 1) Mod 10 - (start - 1) Mod 10 = bc - 1 Then
wz = wz + 11 - bc ‘位置转到下一行,与起点同列
Else
wz = wz + 1
End If
Loop
End Function
Private Sub Form_Load()
‘生成货物边长,降序显示在列表框list1,矩阵元素初始化为0,代码略
End Sub
① ② ③
a=[4,5,3, 6, 7,8,2, 9, 1]
m,c=1,1
for i in range(1, len(a)):
if a[i]>=a[i-1]:
c+=1
m=max (m, c)
else:
c=1
print(c,m)
则程序执行后,c和m的值分别是( )
| 素材一:800*600 24b奔跑.bmp |
| 素材二: 800*600 24b跳跃ipg |
| 素材三:宣传视频.docx |
| 素材四:运动会.html |
| 素材五:《舞动青春》.wav |
为实现上述功能,小王编写如下VB程序,首先在Text1中输入两个满足条件的序列,数字之间用“,”隔开且以“,”结尾,单击按钮“Cod1”,在Text2中输出最小值所在序列中的位置,程序运行界面如下图所示。
Private Sub Cod1_Click( )
Dim s As String, ch As String
Dim i As Integer, j As Integer, n As Integer, c As Integer
Dim a(100) As Integer
s = Text1.Text: c = 0: n = 0
For i = 1 To Len(s)
ch = Mid(s, i, 1)
If ch >= "0" And ch <= "9" Then
Else
n = n + 1
c = 0
End If
Next i
i = 1: j = n
Do While
m = (i + j) \ 2
If a(m) > a(i) Then
i = m
Else
j = m
End If
Loop
End Sub