16. 松鼠摘松果。一棵松树上长了很多质量不同的松果,松鼠先爬到顶部,自上而下,每一层摘取一颗松果。为了摘得总质量最大的松果,进行如下分析:如图a、图b所示,若摘取第三层第一个松果,则可以摘到的松果质量最大为43,即food(9)=33+10;若摘取第三层第二个松果,则可以摘到的松果质量最大为54,即food(10)=29+25;若摘取第三层第三个松果,则可以摘到的松果质量最大为60,即food(11)=26+34;再分析第二层,若摘取第二层的第一个松果,则可以摘取到的松果质量最大为64,即food(5)=food(10)+10;同理,最后计算food(1)的值,即为摘取到总质量最大的松果。
图a
图b
(1)若树上的松果质量如图c所示,则小松鼠能摘到的松果质量最多为
______。
第四层 | 24 | 10 | 38 | 28 |
第三层 | 26 | 15 | 16 | 0 |
第二层 | 13 | 19 | 0 | 0 |
第一层 | 23 | 0 | 0 | 0 |
图c
(2)请将下面的代码补充完整。
(3)程序中加框处代码有错,请改正。
______ Const n = 4
Dim a(1 To n ^ 2) As Integer
'数组a存储单个松果质量
Dim food(1 To n ^ 2) As Integer
'数组food存储累计最大质量
Function m(a As Integer, b As Integer) As Integer
If a < b Then m = b Else m = a
End Function
Private Sub Command1_Click()
Dim i As Integer, j As Integer
Dim ss As String
Randomize
For i = 1 To n
'初始化松果质量
For j = (i - 1) * n + 1 To (i - 1) * n + i
a(j) = Int(Rnd * 30 + 10)
Next j
Next i
ss = ""
For j = n To 1 Step -1
'在List1中输出松果质量
For i = (j - 1) * n + 1 To (j - 1) * n + n
If a(i) <> 0 Then
ss = ss + Str(a(i))
Else
ss = " " + ss
End If
If
_______①_______ Then
List1.AddItem ss
ss = ""
End If
Next i
Next j
End Sub
Private Sub Command2_Click()
Dim i As Integer, j As Integer, k As Integer
For j = 1 To n
'读取最顶层松果质量
food((n - 1) * n + j) =a((n - 1) * n + j)
Next j
For i = n - 1 To 1 Step -1
'求摘取最大松果质量
For j = 1 To i
k = (i - 1) * n + j
food(k) =
Next j
Next i
Label1.Caption = "摘取的松果总质量最大为:" +
______②_______
End Sub