这是一道经典且容易的动态规划(dynamic programming)简称DP
状态转移方程很容易得出 f(i,j) = max(f(i,j) + max(f(i-1,j), f(i-1,j-1)),f(i,j);
当然此题没有复数 所以直接Inc 即可 本人一次AC
{
ID: yaoyuan4
PROG: numtri
LANG: PASCAL
}
Program numtri;
const
inf = 'numtri.in'; outf = 'numtri.out';
var
r, ans : longint;
f : array[0..1000,0..1000] of longint;
Function max(a, b : longint) : longint;
begin
if a > b then exit(a) else exit(b);
end;
Procedure init;
var
i, j : longint;
begin
fillchar(f, sizeof(f), 0);
ans := 0;
assign(input, inf); reset(input);
readln(r);
for i := 1 to r do
begin
for j := 1 to i do
read(f[i,j]);
readln;
end;
close(input);
end;
Procedure work;
var
i, j : longint;
begin
for i := 1 to r do
for j := 1 to i do
inc(f[i, j], max(f[i-1, j], f[i-1, j-1]));
for i := 1 to r do
ans := max(ans, f[r, i]);
end;
Procedure print;
begin
assign(output, outf); rewrite(output);
writeln(ans);
close(output);
end;
begin
init;
work;
print;
end.