wuzw 2011-10-23 00:54:00
点我顶贴
收藏
删除
var i,j,m,n,t:integer;a:array[0..50,0..50,0..1]of integer;
w:array[1..50,1..50]of integer;
f:array[0..50,0..50]of integer;
function max(x,y:integer):integer;
begin
if x>y then
begin a[i,j,0]:=i-1;a[i,j,1]:=j;max:=x end
else begin a[i,j,0]:=i;a[i,j,1]:=j-1;max:=y end;
end;
procedure work;
begin
f[0,0]:=0;
for i:=1 to m do
for j:=1 to n do
f[i,j]:=max(f[i-1,j],f[i,j-1])+w[i,j];
end;
begin
readln(m,n);
for i:=1 to m do
begin
for j:=1 to n do read(w[i,j]);
readln
end;
work;
t:=f[m,n];
fillchar(f,sizeof(f),0); //?
repeat
f[a[i,j,0],a[i,j,1]]:=-maxint;
i:=a[i,j,0];j:=a[i,j,1];
until (i=0) or (j=0);
work;
t:=t+f[m,n];
writeln(t);
readln
end.