题意
写一个程序来查找从最高点到底部任意处结束的路径,使路径经过数字的和最大。每一步可以走到左下方的点也可以到达右下方的点。
分析
f[j] 表示第i行第j个位置上的数到顶点的最大值。
F[j]=max{a[j]+f[j-1],a[j]+f[j]}2<=j<i
F[1]=a[1]+f[1]
n,i,j,w:longint;
a,f:array[1..10000]of longint;
begin
readln(n);
fillchar(f,sizeof(f),0);
readln(a[1]);
f[1]:=a[1];
for i:=2 to n do
begin
for j:=1 to i do
read(a[j]);
for j:=i downto 2 do
if f[j-1]<f[j] then f[j]:=a[j]+f[j] else f[j]:=a[j]+f[j-1];
f[1]:=a[1]+f[1];
end;
w:=0;
for i:=1 to n do
if f[i]>w then w:=f[i];
write(w);
end.