📄 ttwo.pas
字号:
{
ID:maigoak1
PROG:ttwo
}
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.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -