讨论 / 本人的复杂方法,望大牛指正
xy_mouse 2008-06-11 02:05:00
点我顶贴 收藏 删除
var

i,j,e,f,m,n,x,y,a,b,x1,y1,num,en:longint;

a1,a2:array[0..2001,0..2001]of integer;

way:array[1..4000000,1..2]of integer;

procedure ins;

begin

if (a1[a,b]<>1)and(a2[a,b]<>1) then

begin

inc(en);

a2[a,b]:=1;

way[en,1]:=a;

way[en,2]:=b;

end;

end;

begin

readln(m,n);

for i:=1 to m do

begin

for j:=1 to n do

read(a1[i,j]);

readln;

end;

for i:=1 to m do

begin

a1[i,0]:=1;

a1[i,n+1]:=1;

end;

for i:=1 to n do

begin

a1[0,i]:=1;

a1[m+1,i]:=1;

end;

fillchar(a2,sizeof(a2),0);

readln(x,y);

readln(x1,y1);

a2[x,y]:=1;

way[1,1]:=x;way[1,2]:=y;

e:=1;f:=1;en:=1;

repeat

for i:=f to e do

begin

a:=way[i,1];

b:=way[i,2];

dec(a);

ins;

a:=a+2;

ins;

dec(a);

dec(b);

ins;

b:=b+2;

ins;

dec(b);

end;

inc(num);

if a2[x1,y1]=1 then begin writeln(num);halt;end;

f:=e+1;e:=en;

until f>e;

writeln(No Answer!);

end.

查看更多回复
提交回复