lijiaming12340 2011-11-01 00:05:00
点我顶贴
收藏
删除
program ss;
var f,map:array[-2..1002,-2..1002] of longint;
i,j,k,m,n,s,t,ans:longint;
function max(x,y:longint):longint;
begin
if x>y then exit(x) else exit(y);
end;
begin
readln(m,n);
for i:=-2 to 1002 do
for j:=-2 to 1002 do map[i,j]:=-1;
for i:=1 to m do
for j:=1 to n do read(map[i,j]);
fillchar(f,sizeof(f),0);
f[1,1]:=map[1,1];
for i:=1 to m do
for j:=1 to n do
if map[i,j]<>-1 then
begin
if f[i-1,j-2]>0 then f[i,j]:=max(f[i,j],f[i-1,j-2]+map[i,j]);
if f[i-2,j-1]>0 then f[i,j]:=max(f[i,j],f[i-2,j-1]+map[i,j]);
end;
ans:=0;
for i:=1 to m do ans:=max(ans,f[i,n]);
for i:=1 to n do ans:=max(ans,f[i,m]);
if ans=0 then write('cannot arrive.') else write(ans);
end.