题目

有一个10*10的场地,要在场地上放入若干件正方形货物。算法描述: ⑴货物逐个尝试放入,搜索场地矩阵(从左到右,从上到下),若某块区域能放下该货物,则标记这些相应位置为货物编号,然后返回左上角检测下一货物。 ⑵搜索时,若右侧剩余列小于货物边长,则跳转到下一行,若下方剩余行小于货物边长,则直接返回检测下一货物,直到所有货物检测完毕。 小武同学根据上述算法设计了VB程序。程序运行,在列表框list1降序输出货物规格,点击“存放”按钮command1,在列表框list2输出摆放完成的场地矩阵。 算法的VB程序如下,回答下列问题。 (1) 若货物4的尺寸改为4*4,其他不变,则货物9会被放在 (填数组下标) (2) 在程序划线处填上合适代码,使程序完整 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 ① ② ③  答案: 【1】49 【1】pd(j, hw(i))【2】j = ((j - 1) \ 10 + 1) * 10 + 1【3】cd(wz) <> 0
信息技术 试题推荐
最近更新