记录编号 |
14047 |
评测结果 |
AAAAAATTTT |
题目名称 |
不听话的机器人 |
最终得分 |
60 |
用户昵称 |
.Xmz |
是否通过 |
未通过 |
代码语言 |
Pascal |
运行时间 |
7.269 s |
提交时间 |
2009-10-26 15:41:32 |
内存使用 |
0.52 MiB |
显示代码纯文本
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:=ii else max:=jj;
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;
for x:=1 to n do
for y:=1 to n do
for d:=0 to 3 do
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)and(f[0,x,y,d]>0) then a:=f[0,x,y,d];
writeln(f2,a);
close(f1);close(f2);
end.