-
UID:107
-
- 注册时间2005-11-10
- 最后登录2012-10-26
- 在线时间73小时
-
- 发帖474
- 搜Ta的帖子
- 精华6
- OI财富10090
- 威望1957
- 贡献值6
- 交易币0
-
访问TA的空间加好友用道具
|
网上的标程 - program ttwo;
- var
- fin,fout:text;
- map:array[1..10,1..10]of char;
- state:array[1..10,1..10,0..3,1..10,1..10,0..3]of boolean;
- dir:array[0..3]of record
- x,y:integer;
- end;
- time:longint;
- i,j,fx,fy,fd,cx,cy,cd:integer;
- begin
- assign(fin,'ttwo.in');
- reset(fin);
- for i:=1 to 10 do begin
- for j:=1 to 10 do begin
- read(fin,map[i,j]);
- if map[i,j]='F' then begin fx:=i;fy:=j;end;
- if map[i,j]='C' then begin cx:=i;cy:=j;end;
- end;
- readln(fin);
- end;
- close(fin);
- fillchar(state,sizeof(state),0);
- fd:=0;cd:=0;state[fx,fy,fd,cx,cy,cd]:=true;
- time:=0;
- dir[0].x:=-1;dir[0].y:=0;
- dir[1].x:=0;dir[1].y:=1;
- dir[2].x:=1;dir[2].y:=0;
- dir[3].x:=0;dir[3].y:=-1;
- assign(fout,'ttwo.out');
- rewrite(fout);
- repeat
- if (fx+dir[fd].x=0) or (fx+dir[fd].x=11) or (fy+dir[fd].y=0) or (fy+dir[fd].y=11) or (map[fx+dir[fd].x,fy+dir[fd].y]='*') then fd:=(fd+1) mod 4 else begin fx:=fx+dir[fd].x;fy:=fy+dir[fd].y;end;
- if (cx+dir[cd].x=0) or (cx+dir[cd].x=11) or (cy+dir[cd].y=0) or (cy+dir[cd].y=11) or (map[cx+dir[cd].x,cy+dir[cd].y]='*') then cd:=(cd+1) mod 4 else begin cx:=cx+dir[cd].x;cy:=cy+dir[cd].y;end;
- if state[fx,fy,fd,cx,cy,cd] then begin
- writeln(fout,0);
- close(fout);
- halt;
- end;
- inc(time);
- state[fx,fy,fd,cx,cy,cd]:=true;
- until (fx=cx) and (fy=cy);
- writeln(fout,time);
- close(fout);
- end.
|