| ||||||||||
| Online Judge | Problem Set | Authors | Online Contests | User | ||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest | |||||||||
求助!!!这是我的程序:
Program ZJU1047;
Var
map:array[0..80,0..80]of char;
a,b,c,d,i,j,k:Longint;
Label 1;
Procedure Change(c,d:Longint);
Begin
if map[c,d+1]='X' then Begin map[c,d+1]:='0';Change(c,d+1);end;
if map[c,d-1]='X' then Begin map[c,d-1]:='0';Change(c,d-1);end;
if map[c+1,d]='X' then Begin map[c+1,d]:='0';Change(c+1,d);end;
if map[c-1,d]='X' then Begin map[c-1,d]:='0';Change(c-1,d);end;
if map[c+1,d+1]='X' then Begin map[c+1,d+1]:='0';Change(c+1,d+1);end;
if map[c-1,d+1]='X' then Begin map[c-1,d+1]:='0';Change(c-1,d+1);end;
if map[c+1,d-1]='X' then Begin map[c+1,d-1]:='0';Change(c+1,d-1);end;
if map[c-1,d-1]='X' then Begin map[c-1,d-1]:='0';Change(c-1,d-1);end;
end;
Procedure Init;
Begin
Fillchar(map,sizeof(map),'.');
readln(a,b,c,d);
if (a=0)and(b=0)and(c=0)and(d=0)then halt;
For i:=1 to a do map[i,b+2]:='A';
For i:=1 to b do map[a+2,i]:='A';
For i:=1 to a do Begin
For j:=1 to b do
Read(map[i,j]);
Readln;
End;
End;
Procedure Click;
Begin
map[c,d]:='0';
Change(c,d);
end;
Procedure Count;
Begin
For i:=0 to a+1 do
For j:=0 to b+1 do
if (map[i,j]<>'0') {and (map[i,j]<>'A')} and((map[i+1,j]='0')or(map[i-1,j]='0')or(map[i,j+1]='0')
or(map[i,j-1]='0')) then map[i,j]:='Q';
End;
Begin
1: k:=0;
INit;
Click;
Count;
For i:=0 to a+1 do
For j:=0 to b+1 do if map[i,j]='Q' then
Begin
If map[i,j+1]='0' then inc(k);
If map[i,j-1]='0' then inc(k);
If map[i+1,j]='0' then inc(k);
If map[i-1,j]='0' then inc(k);
end;
Writeln(k);goto 1;
End.
请教各位高手,为何会出现Range Check Error??谢谢!
Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator