⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ttwo.pas

📁 Magio牛的usaco源代码
💻 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 + -