讨论 / 大牛帮我,老错一个
wyhbb163 2009-05-06 09:47:00
点我顶贴 收藏 删除
const

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

var

p,c:array[1..2000,1..2000] of 0..1;

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

d:array[1..4000000]of longint;

x,y,x1,y1,x2,y2,i,j,n:integer;

st,e:longint;

ch:string;

begin

//////////////////////////////////////////读

readln(n);

for i:=1 to n do begin

readln(ch);

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

end;

fillword(c,sizeof(c),0);

st:=1;

e:=1;

readln(x1,y1);

readln(x2,y2);

f[1,1]:=x1;

f[1,2]:=y1;

d[1]:=0;

c[x1,y1]:=1;

//////////////////////////////////////////搜

repeat

for i:=1 to 4 do begin

x:=f[st,1]+s[i,1];

y:=f[st,2]+s[i,2];

if (x>0)and(y>0)and(x<=n)and(y<=n) then begin

if (p[x,y]<>1) and (c[x,y]<>1) then begin

e:=e+1;

f[e,1]:=x;

f[e,2]:=y;

d[e]:=d[st]+1;

c[x,y]:=1;

if (x=x2)and(y=y2) then begin

writeln(d[e]);

halt;

end;

end;

end;

end;

st:=st+1;

until st>e;

end.

f 是广搜队列

c 是判重

st 当前

e 新节点位置(末节点)

p 地图

#1 Aule@2009-05-06 09:47:00
回复 删除
STRING 换成 ANSISTRING
查看更多回复
提交回复