讨论 / 为毛不过??什么是普通保护错误??
李铁骑 2013-05-10 08:37:00
点我顶贴 收藏 删除
var a,b,d:array[1..1000]of longint;

f,p:array[1..1000,1..1000]of boolean;

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

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

x1,x2,y1,y2,n,i,head,tail,k:longint;

boo:char;

begin

fillchar(f,sizeof(f),false);

fillchar(p,sizeof(p),true);

readln(n);

for i:=1 to n do

begin

for k:=1 to n do

begin

read(boo);

if boo='0' then f[i,k]:=true;

end;

readln;

end;

read(x1,y1);

read(x2,y2);

a[1]:=x1; b[1]:=y1;

p[x1,y1]:=false;

head:=0;

tail:=1;

d[1]:=0;

repeat

inc(head);

for i:=1 to 4 do

if (f[a[head]+xx[i],b[head]+yy[i]])and(p[a[head]+xx[i],b[head]+yy[i]])

then

begin

inc(tail);

a[tail]:=a[head]+xx[i];

b[tail]:=b[head]+yy[i];

d[tail]:=d[head]+1;

p[a[head]+xx[i],b[head]+yy[i]]:=false;

if (a[tail]=x2)and(b[tail]=y2)

then begin writeln(d[tail]);

halt;

end;

end;

until head=tail;

end.

BFS那里会爆内存啊??求指点啊!!

#1 李铁骑@2013-05-10 08:37:00
回复 删除
a,b,d:array[1..8000]of longint;

f,p:array[1..8000,1..8000]of boolean;

开这么大后第一组超时 后面的还不够

肿么搞啊!!

查看更多回复
提交回复