求助,为什么深搜会数组越界(P党)

P1451 求细胞数量

队列请开10000
by hehezhou @ 2018-07-18 15:20:17


@[zhr596082417](/space/show?uid=67371) 但是连样例都过不了
by 幻蓝 @ 2018-07-18 15:20:48


我交了。。。 过了。。
by hehezhou @ 2018-07-18 15:22:12


a,b从0开到101即可
by hehezhou @ 2018-07-18 15:22:51


@[zhr596082417](/space/show?uid=67371) 他就是说我201错误
by 幻蓝 @ 2018-07-18 15:22:56


或者(a[xx,yy]<>0)and(xx<=n)and(yy<=m)and(xx>=1)and(yy>=1)and(b[xx,yy])的(a[xx,yy]<>0)放到后面判断
by hehezhou @ 2018-07-18 15:23:39


@[zhr596082417](/space/show?uid=67371) 谢谢大佬 过了
by 幻蓝 @ 2018-07-18 15:25:41


@[zhr596082417](/space/show?uid=67371) 话说这个有关系吗
by 幻蓝 @ 2018-07-18 15:25:54


```pascal var i,j,n,m,s:longint; k:string; f:array[1..4,1..2]of integer=((1,0),(-1,0),(0,1),(0,-1)); a:array[0..1000,0..1000]of longint;//这里 b:array[0..1000,0..1000]of boolean;//这里 d:array[1..10000,0..2]of longint;//这里 procedure dfs(x,y:longint); var i,head,tail,xx,yy:longint; begin head:=0;tail:=1; d[1,0]:=0; d[1,1]:=x; d[1,2]:=y; repeat inc(head); for i:=1 to 4 do begin xx:=d[head,1]+f[i,1]; yy:=d[head,2]+f[i,2]; if (a[xx,yy]<>0)and(xx<=n)and(yy<=m)and(xx>=1)and(yy>=1)and(b[xx,yy]) then begin inc(tail); d[tail,0]:=head; d[tail,1]:=xx; d[tail,2]:=yy; b[xx,yy]:=false; end; end; until head>=tail; end; begin readln(n,m); fillchar(b,sizeof(b),1); for i:=1 to n do begin readln(k); for j:=1 to m do val(k[j],a[i,j]); end; for i:=1 to n do for j:=1 to m do if (a[i,j]<>0)and(b[i,j]) then begin b[i,j]:=false; dfs(i,j); inc(s); end; writeln(s); end. ```
by hehezhou @ 2018-07-18 15:27:36


@[zhr596082417](/space/show?uid=67371) 为什么放到后面判断就不会爆
by 幻蓝 @ 2018-07-18 15:28:38


| 下一页