解决此问题可采用自底至顶分析的方法。如下图所示的数塔中,先从第3层开始分析:如果路径经过第3层的第1个数字12,那么从12到尾结点的路径上数字之和的最大值是当前结点值加上该结点左下方、右下方结点中的较大值,记作f(3,1)=12+14;同理,f(3,2)=7+15,f(3,3)=26+15;再分析第2层,计算f(2,1),f(2,2);最后计算出第1层f(1,1),即为所求结果。
(1)如上图所示数塔各条路径上的数字和的最大值为_________。
(2)编写VB程序,运行界面如下图所示,程序代码如下,请在划线处填入合适的代码,将程序补充完整。
Const n=5
Dim a(1 To n2) As Integer'数组a存储数塔数据,存储结构如下图所示
Dim f(1 To n2) As Integer'数组f存储从第i层第j个数到底层尾结点的最大数字之和,其存储结构与数组a一样
Private Sub Command1_ Click()
'生成数塔,将数据存人a数组中,代码略
End sub
Private Sub Command Click ()
Dim i As Integer, j As Integer, k As Integer
For j=l To n
F((n-1)* n+ j)=____________Next j
For i=______________
For j=l To ik=(i-1)* n+ j
f(k)=_________________
Next j
Next iLabel1. Caption="路径上的数字和最大值为:"+Str(f(1))
End sub
Function max(a As Integer, b As Integer)As Integer
If a> b Then max=a Else max=b
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