比赛 20091023练习题 评测结果 WWWWWWWTTT
题目名称 不听话的机器人 最终得分 0
用户昵称 .Xmz 运行时间 0.000 s
代码语言 Pascal 内存使用 0.00 MiB
提交时间 2009-10-26 11:51:56
显示代码纯文本
program xzm;
var
f:array[0..1,0..101,0..101,0..3]of integer;
f1,f2:text;
xx:array[1..100,1..100]of char;
zl:array[1..1000]of string;
n,m,x1,y1,a,b,d,x,y:integer;
function max(ii,jj:integer):integer;
 begin
  if ii<jj then max:=jj else max:=ii;
 end;
begin
 assign(f1,'nrobot.in');assign(f2,'nrobot.out');
 reset(f1);rewrite(f2);
 readln(f1,n,m,x1,y1);
 for a:=1 to n do
  for b:=1 to n do
   begin
    if b<>n then read(f1,xx[a,b]) else readln(f1,xx[a,b]);
   end;
 for a:=1 to m do
  readln(f1,zl[a]);
 for x:=0 to n+1 do
  for y:=0 to n+1 do
   for d:=0 to 3 do
    f[0,x,y,d]:=9999;
  f[0,x1,y1,0]:=0;
 for a:=1 to m do
 begin
 for x:=1 to n do
  for y:=1 to n do
   for d:=0 to 3 do
   if xx[x,y]='.' then
   begin
    f[1,x,y,d]:=f[0,x,y,d]+1;
    if zl[a]='LEFT' then f[1,x,y,d]:=max(f[1,x,y,d],f[0,x,y,(d+1)mod 4]);
    if zl[a]='RIGHT' then f[1,x,y,d]:=max(f[1,x,y,d],f[0,x,y,(d+3)mod 4]);
    if zl[a]='FORWARD' then
     begin
     if d=0 then f[1,x,y,d]:=max(f[1,x,y,d],f[0,x+1,y,d]);
     if d=1 then f[1,x,y,d]:=max(f[1,x,y,d],f[0,x,y-1,d]);
     if d=2 then f[1,x,y,d]:=max(f[1,x,y,d],f[0,x-1,y,d]);
     if d=3 then f[1,x,y,d]:=max(f[1,x,y,d],f[0,x,y+1,d]);
     end;
    if zl[a]='BACK' then
     begin
     if d=0 then f[1,x,y,d]:=max(f[1,x,y,d],f[0,x-1,y,d]);
     if d=1 then f[1,x,y,d]:=max(f[1,x,y,d],f[0,x,y+1,d]);
     if d=2 then f[1,x,y,d]:=max(f[1,x,y,d],f[0,x+1,y,d]);
     if d=3 then f[1,x,y,d]:=max(f[1,x,y,d],f[0,x,y-1,d]);
     end;
   end
    else
    f[1,x,y,d]:=9999;
  f[0,x,y,d]:=f[1,x,y,d];
 end;

a:=9999;
 for x:=1 to n do
  for y:=1 to n do
   for d:=0 to 3 do
    if f[0,x,y,d]<a then a:=f[0,x,y,d];
 writeln(f2,a);
 close(f1);close(f2);
end.