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 |
水过。。附代码。var a,b,c,d,e,m,n,u1,u2,v1,v2,l,r,xx,yy,zz,sum:longint; x:array[-1..100,-1..100]of char; q,p,uu,vv,x1,y1:array[0..1000000]of longint; flag:array[-1..100,-1..100]of boolean; ss:array[0..1000000]of char; qq:array[0..1000000]of longint; begin readln(n,m); for a:=0 to 2*n do for b:=0 to 2*m do x[a,b]:='.'; for a:=1 to 2*n-1 do begin for b:=1 to 2*m-1 do begin read(x[a,b]); if x[a,b]='S' then begin u1:=a; u2:=b; end; if x[a,b]='E' then begin v1:=a; v2:=b; end; end; readln; end; q[1]:=u1; p[1]:=u2; uu[1]:=0; l:=0;r:=1; flag[u1,u2]:=true; while l<r do begin inc(l); xx:=q[l];yy:=p[l]; if (xx=v1)and(yy=v2) then begin e:=l; break; end; if (x[xx-1,yy]<>'.')and(x[xx-2,yy]<>'.')and(not flag[xx-2,yy]) then begin flag[xx-2,yy]:=true; inc(r); q[r]:=xx-2; p[r]:=yy; vv[r]:=l; end; if (x[xx+1,yy]<>'.')and(x[xx+2,yy]<>'.')and(not flag[xx+2,yy]) then begin flag[xx+2,yy]:=true; inc(r); q[r]:=xx+2; p[r]:=yy; vv[r]:=l; end; if (x[xx,yy+1]<>'.')and(x[xx,yy+2]<>'.')and(not flag[xx,yy+2]) then begin flag[xx,yy+2]:=true; inc(r); q[r]:=xx; p[r]:=yy+2; vv[r]:=l; end; if (x[xx,yy-1]<>'.')and(x[xx,yy-2]<>'.')and(not flag[xx,yy-2]) then begin flag[xx,yy-2]:=true; inc(r); q[r]:=xx; p[r]:=yy-2; vv[r]:=l; end; end; while vv[e]>0 do begin inc(sum); x1[sum]:=q[e]; y1[sum]:=p[e]; e:=vv[e]; end; inc(sum); x1[sum]:=u1;y1[sum]:=u2; for a:=sum-1 downto 1 do begin if x1[a]-x1[a+1]=2 then ss[a]:='S'; if x1[a]-x1[a+1]=-2 then ss[a]:='N'; if y1[a]-y1[a+1]=2 then ss[a]:='E'; if y1[a]-y1[a+1]=-2 then ss[a]:='W'; end; l:=sum-1; while l>0 do begin r:=l; while ss[l]=ss[l-1] do dec(l); if r<>l then writeln(ss[r],' ',r-l+1) else writeln(ss[r],' ',1); dec(l); end; end. Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator