讨论 / wujie
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.

查看更多回复
提交回复