比赛 20091023练习题 评测结果 TTTTEEEEEE
题目名称 不听话的机器人 最终得分 0
用户昵称 bly1991 运行时间 0.000 s
代码语言 Pascal 内存使用 0.00 MiB
提交时间 2009-10-26 11:33:12
显示代码纯文本
program bly(input,output);
var
  data:array[1..100] of string;
  map:array[1..100,1..100] of char;
  i,j:integer;
  n,m,x,y:integer;
  min,im:integer;
  f1,f2:text;

  procedure dg(x0,y0,z,ans:integer);
  var
    i0,s:integer;
  begin
    if z=m+1 then begin
      if ans<min then min:=ans;
    end
    else begin
      for i0:=z to m do begin
        if data[z]='FORWARD' then s:=1;
        if data[z]='BACK' then s:=-1;
        if data[z]='LEFT' then begin
          if im=1 then im:=4
          else im:=im-1;
          s:=0;
        end;
        if data[z]='RIGHT' then begin
          im:=(im+1) mod 4;
          s:=0;
        end;
        if im=1 then y:=y0+s;
        if im=2 then y:=y0-s;
        if im=3 then x:=x0+s;
        if im=4 then x:=x0-s;
        if (x<=n)and(y<=n)and(map[x,y]<>'*') then dg(x,y,z+1,ans);
        if (x>n)or(y>n)or(map[x,y]='*') then dg(x0,y0,z+1,ans+1);
      end;
    end;
  end;
begin
  min:=maxint;
  assign(f1,'nrobot.in');
  reset(f1);
  readln(f1,n,m,x,y);
  for i:=1 to n do begin
    for j:=1 to n do begin
      read(f1,map[i,j]);
    end;
    readln(f1);
  end;
  for i:=1 to m do begin
    readln(f1,data[i]);
  end;
  close(f1);
  im:=1;

  dg(x,y,1,0);
  assign(f2,'nrobot.out');
  rewrite(f2);
  writeln(f2,min);
  close(f2);
end.