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

📄 ac1031.pas

📁 同济大学 Online在线题库 AC源代码合集 程序设计竞赛必看资料
💻 PAS
字号:
program tju1031;
const
  size=10;
  dx:array[0..3]of shortint=(-1,0,1,0);
  dy:array[0..3]of shortint=(0,1,0,-1);
var
  map:array[0..size+1,0..size+1]of char;
  v:array[1..size,1..size,0..3,1..size,1..size,0..3]of word;
  n,t,i,j,cx,cy,cd,mx,my,md,ans:longint;
begin
  read(n);
  for t:=1 to n do begin
    for i:=1 to size do begin
      readln;
      for j:=1 to size do begin
        read(map[i,j]);
        case map[i,j] of
          'C':begin cx:=i;cy:=j;cd:=0;map[i,j]:='.';end;
          'M':begin mx:=i;my:=j;md:=0;map[i,j]:='.';end;
        end;
      end;
    end;
    ans:=0;
    repeat
      inc(ans);
      v[cx,cy,cd,mx,my,md]:=t;
      if map[cx+dx[cd],cy+dy[cd]]='.' then begin inc(cx,dx[cd]);inc(cy,dy[cd]);end else cd:=(cd+1) and 3;
      if map[mx+dx[md],my+dy[md]]='.' then begin inc(mx,dx[md]);inc(my,dy[md]);end else md:=(md+1) and 3;
    until (cx=mx) and (cy=my) or (v[cx,cy,cd,mx,my,md]=t);
    if v[cx,cy,cd,mx,my,md]=t then writeln(-1) else writeln(ans);
  end;
end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -