比赛 |
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.