QBMAX - Đường đi có tổng lớn nhất
Tác giả: flashmt
Ngôn ngữ: Pascal
var a,b:array[0..101,1..100] of integer;
n,m:byte;
procedure rf;
var i,j:byte;
begin
readln(m,n);
for i:=1 to m do
begin
for j:=1 to n do
read(a[i,j]);
readln;
end;
end;
function max(a,b,c:integer):integer;
begin
if (a>=b) and (a>=c) then max:=a
else
begin
if b>c then max:=b else max:=c;
end;
end;
procedure pr;
var i,j:byte;
begin
fillchar(b,sizeof(b),0);
for j:=1 to n do
begin
b[0,j]:=-30000;
b[n+1,j]:=b[0,j];
end;
for i:=1 to m do
b[i,1]:=a[i,1];
for j:=2 to n do
for i:=1 to m do
b[i,j]:=max(b[i-1,j-1],b[i,j-1],b[i+1,j-1])+a[i,j];
end;
procedure wf;
var i:byte; max:integer;
begin
max:=-32000;
for i:=1 to m do
if b[i,n]>max then max:=b[i,n];
write(max);
end;
begin
rf;
pr;
wf;
end.