数字金字塔
题意
从最高点到底部任意处结束的路径,使路径经过数字的和最大。每一步可以走到左下方的点也可以到达右下方的点。
分析
从最低层开始走。
var
n,i,j:longint;
f,a:array[0..2000,0..2000]of longint;
function work(x,y:longint):longint;
begin
if x>y then exit(x) else exit(y);
end;
begin
readln(n);
for i:=1 to n do
begin
for j:=1 to i do
read(a[i,j]);
readln;
end;
for i:=n downto 1 do
for j:=1 to i do
f[i,j]:=a[i,j]+work(f[i+1,j],f[i+1,j+1]);
write(f[1,1]);
end.