Показать все сообщения Спрятать все сообщения{$A+,B-,D+,E+,F-,G-,I+,L+,N-,O-,P-,Q-,R+,S+,T-,V+,X+,Y+} {$M 16384,0,655360} Const Maxn= 20; dx : Array[1..4] Of Integer =( 1,0,-1, 0); dy : Array[1..4] Of Integer =( 0,1, 0,-1); Nb : Array[1..4] Of Char =('R','T','L','B'); Var Matrix: Array[0..Maxn+1, 0..Maxn+1] Of Boolean; n: Integer; i, j, t: Integer; minx, miny: Integer; Procedure Print2; Var Queuex, Queuey: Array[1..Maxn*Maxn] Of Integer; Front, Rear: Integer; x, y, count, i: Integer; ch: Char; st: String; Begin FillChar(Matrix, SizeOf(Matrix), False); Queuex[1]:= minx; Queuey[1]:= miny; Front:= 1; Rear:= 1; Matrix[minx, miny]:= True; count:= 1; While Rear<= Front Do Begin x:= Queuex[Rear]; y:= Queuey[Rear]; Inc(Rear); Readln(st); i:= 1; While st[i]<>',' Do Begin Case upcase(st[i]) Of 'R':Begin Inc(Front); Queuex[Front]:= x+ dx[1]; Queuey[Front]:= y+ dy[1]; Matrix[x+dx[1], y+dy[1]]:= True; inc(Count); End; 'T':Begin Inc(Front); Queuex[Front]:= x+ dx[2]; Queuey[Front]:= y+ dy[2]; Matrix[x+dx[2], y+dy[2]]:= True; inc(Count); End; 'L':Begin Inc(Front); Queuex[Front]:= x+ dx[3]; Queuey[Front]:= y+ dy[3]; Matrix[x+dx[3], y+dy[3]]:= True; inc(Count); End; 'B':Begin Inc(Front); Queuex[Front]:= x+ dx[4]; Queuey[Front]:= y+ dy[4]; Matrix[x+dx[4], y+dy[4]]:= True; inc(Count); End; '.': Break; End; inc(i); End; End; Writeln(Count); For x:= 1 To Maxn Do For y:= 1 To Maxn Do If Matrix[x, y] Then Writeln(x,' ', y); End; Procedure Print1; Var Queuex, Queuey: Array[1..Maxn*Maxn] Of Integer; x, y, k: Integer; Front, Rear: Integer; first: Boolean; Begin Writeln(minx, ' ', miny); Queuex[1]:= minx; Queuey[1]:= miny; Front:= 1; Rear:= 1; Matrix[minx, miny]:= False; First:= True; While Rear<= Front Do Begin If Not First Then Writeln(',') Else First:= False; x:= Queuex[Rear]; y:= Queuey[Rear]; Inc(Rear); For k:=1 To 4 Do If Matrix[x+dx[k], y+dy[k]] Then Begin Write(Nb[k]); Matrix[x+dx[k], y+dy[k]]:= False; Inc(Front); Queuex[Front]:= x+dx[k]; Queuey[Front]:= y+ dy[k] End; End; Writeln('.'); End; Var st: string; Begin st:=''; Read(n); If Eoln Then Begin FillChar(Matrix, SizeOf(Matrix), False); minx:= Maxint; miny:= minx; For i:=1 To n Do Begin Readln(j, t); If (j= Minx) And (t< Miny) Then Miny:= t; If (j< Minx) ANd (t= Miny) Then Minx:= j; If (j< Minx) And (t< Miny) Then Begin minx:= j; miny:= t; End; Matrix[j, t]:= True; End; Print1; End Else Begin minx:= n; Readln(miny); Print2; End; End. I tried with many test, It all returned the true answer but not to be accepted. Delete this {$A+,B-,D+,E+,F-,G-,I+,L+,N-,O-,P-,Q-,R+,S+,T-,V+,X+,Y+} {$M 16384,0,655360} And you'll get AC! I have got AC. I have repaired it for all today'afternoon but found nothing. Can you explain to me why my program got wrong with some directive compilers, It should be warned in FAQ. In my timus programs I've never used any directive compilers, except {$M 16777216}, so in this question I can't help you! )) Because of you use {$M 16384,0,655360} directive which have the next syntax: {$M minstacksize,maxstacksize} or {$M reservedbytes} for Linux |