讨论 / 34:求判错
kids 2012-01-25 04:48:00
点我顶贴 收藏 删除
program em;

const

dj:array[1..4] of integer=(1,0,-1,0);

di:array[1..4] of integer=(0,1,0,-1);

var

p:array[1..1000,1..1000] of integer;

i,j,n,x1,x2,y1,y2,m,min:longint;

s:string;

procedure sort;

begin

if p[x2,y2]<=min then min:=p[x2,y2];

end;

procedure trye(i,j,m:integer);

var

k,ii,jj:integer;

begin

p[i,j]:=m;

ii:=i;

jj:=j;

if (i<>x2) or (j<>y2) then

for k:=1 to 4 do

begin

i:=ii+di[k];

j:=jj+dj[k];

if (i>=1) and (i<=n) and (j>=1) and (j<=n) and (p[i,j]=0) then

trye(i,j,m+1);

end

else sort;

p[ii,jj]:=0;

end;

begin

readln(n);

for i:=1 to n do

begin

readln(s);

for j:=1 to n do val(s[j],p[i,j]);

end;

readln(x1,y1);

readln(x2,y2);

min:=maxint;

trye(x1,y1,0);

writeln(min);

end.

查看更多回复
提交回复