讨论 / 我用的广搜...有溢出的道理么
裤子11 2010-02-03 08:23:00
点我顶贴 收藏
var c:Array[1..2000,1..2000]of char;

bx,by,bz:array[1..4000000]of longint;

f:array[1..2000,1..2000]of boolean;

yjx,yjy,bsx,bsy,i,j,k,l,m,n:longint;

procedure cheak(x,y,z:longint);

begin

if (x=bsx)and(y=bsy)then

begin

writeln(z);

halt;

end;

if (c[x,y]=’0’)and(f[x,y]=false) then

begin

inc(k);

bx[k]:=x;by[k]:=y;bz[k]:=z+1;f[x,y]:=true;

end;

end;

procedure search(i:integer);

var x,y,z:longint;

begin

x:=bx[i];y:=by[i];z:=bz[i];

if x+1<=n then cheak(x+1,y,z);

if y-1>0 then cheak(x,y-1,z);

if x-1>0 then cheak(x-1,y,z);

if y+1<=n then cheak(x,y+1,z);

if i+1>k then begin writeln(0);halt;end;

search(i+1);

end;

begin

readln(n);

for i:=1 to n do

begin

for j:=1 to n do

read(C[i,j]);

readln;

end;

readln(yjx,yjy);

readln(bsx,bsy);

bx[1]:=yjx;by[1]:=yjy;bz[1]:=1;k:=1;f[yjx,yjy]:=true;

search(1);

end.

后面8个都溢出...什么东西

#1 裤子11@2010-02-03 08:23:00
回复
我错了很愚蠢的错误..把search的改成while就好了。。。系统的寨决不能乱用哀。。么让他堆他也去堆
没有更多回复了哦~