yiyu9261wsx 2013-09-13 07:26:00
点我顶贴
收藏
删除
var f:array[0..500,0..500]of integer;
i,j,k,n,m,c,d:integer;
s1,s2:array[0..5]of integer;
function min(a,b:integer):integer;
begin
if a<b then exit(a) else exit(b);
end;
function dp(a,b:integer):integer;
var i,j,k,aa,bb:integer;
begin
if f[a,b]>0 then exit(f[a,b]);
k:=maxint;
for i:=1 to 5 do
begin
aa:=a+s1[i];
bb:=b+s2[i];
if (aa<0)or(bb<0) then continue;
k:=min(k,dp(aa,bb)+1);
end;
dp:=k;
f[a,b]:=k;
end;
begin
readln(n,m,c,d);
//writeln(a,' ',b);
s1[1]:=-2;s1[2]:=1; s1[3]:=1;s1[4]:=1;s1[5]:=1;
s2[1]:=-2;s2[2]:=-1; s2[3]:=2;s2[4]:=1;s2[5]:=0;
fillchar(f,sizeof(f),0);
f[n,m]:=1;
k:=dp(c,d)-1;
writeln(k);
end.