对w*h(11*8)网格数据进行存储,无树的位置对应数组元素数值为0,有树的位置对应数组元素数值为1。数组d中数据初始化后,对应数组元素数值d(2)=1:d(36)=1:d(52)=1;d(59)=1:d(60)=1:d(85)=1,其他数组元素数值为0。对应最大空正方形的起始位置为5,边长为4。

找最大空正方形的方法如下:
从当前位置右下角开始逐渐扩大正方形边长,直到有树出现,不能再扩展为止;
取下一个位置,按照步骤继续查找,最后1列为边界,该位置上无需查找。
(1)给定7*8网格,有树的位置为d(9)=1:d(17)=1:d(27)=1:d(36)=1:d(52)=1,则对应最大空正方形的起始位置为_________,边长为__________。
(2)小李根据上述描述,设计了一个查找最大的空正方形起始位置和边长的算法。算法的VB程序如下请在划线处填入合适的代码。
Const w = 11
Const h = 8
Dim d(1 To w * h) As Integer
Private Sub Form_Load ( )
'数组初始化,无树的位置对应数组元素数值为0,有树的位置对应数组元素数值为1
End Sub
Private Sub Commandl_Click ( )
Dim i As Integer, length As Integer, maxw As Integer
Dim max As Integer
max = 0
For i = 1 To w * h
If i Mod w <> 0 Then '判断该位置是否需要查找
length = scan (i)
If length > max Then max = length: maxw = i
End If
Next i
'输出最大空正方形的起始位置和边长
End Sub
Function scan(k As Integer) As Integer
Dim j As Integer
Dim t As Integer, s As Integer
Dim dw As Integer
t=1
Do While k\w+1+t<h And__________
s=0
dw = k + w + 1
For j = 1 To t ^ 2
s = s + d (dw + __________)
Next j
If ________ Then
Exit Do
Else
t = t + 1
End If
Loop
scan = t
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


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

