📄 pils.pas
字号:
var pro,tp:array[1..80000,1..3]of longint;
a:array[1..100,1..100]of longint;
b:array[1..100,1..100,1..8]of longint;
step,ti,tj,npro,ntp,i,j,m,n,k:longint;
procedure setfile;
begin
close(input);
assign(input,'pils.in');
reset(input);
close(output);
assign(output,'pils.out');
rewrite(output);
end;
begin
setfile;
read(n,m);
for i:=1 to m do for j:=1 to n do
begin
read(a[i,j]);
for k:=1 to 8 do b[i,j,k]:=maxint;
end;
for i:=1 to 8 do b[1,1,i]:=0;
npro:=8;
for i:=1 to 8 do
begin
pro[i,1]:=1;
pro[i,2]:=1;
pro[i,3]:=i;
end;
repeat
ntp:=0;
for i:=1 to npro do
begin
case pro[i,3] of
1:begin
ti:=pro[i,1]-a[pro[i,1],pro[i,2]];
tj:=pro[i,2]
end;
2:begin
ti:=pro[i,1];
tj:=pro[i,2]+a[pro[i,1],pro[i,2]];
end;
3:begin
ti:=pro[i,1]+a[pro[i,1],pro[i,2]];
tj:=pro[i,2];
end;
4:begin
ti:=pro[i,1];
tj:=pro[i,2]-a[pro[i,1],pro[i,2]];
end;
5:begin
ti:=pro[i,1]-a[pro[i,1],pro[i,2]];
tj:=pro[i,2]+a[pro[i,1],pro[i,2]];
end;
6:begin
ti:=pro[i,1]+a[pro[i,1],pro[i,2]];
tj:=pro[i,2]+a[pro[i,1],pro[i,2]];
end;
7:begin
ti:=pro[i,1]+a[pro[i,1],pro[i,2]];
tj:=pro[i,2]-a[pro[i,1],pro[i,2]];
end;
8:begin
ti:=pro[i,1]-a[pro[i,1],pro[i,2]];
tj:=pro[i,2]-a[pro[i,1],pro[i,2]];
end;
end;
if (ti>0)and(ti<m+1)and(tj>0)and(tj<n+1) then
begin
step:=b[pro[i,1],pro[i,2],pro[i,3]]+1;
if (ti=m)and(tj=n) then
begin
writeln(step);
close(output);
halt
end;
for j:=1 to 8 do
if (j<>pro[i,3])and(b[ti,tj,j]>step) then
begin
b[ti,tj,j]:=step;
inc(ntp);
tp[ntp,1]:=ti;
tp[ntp,2]:=tj;
tp[ntp,3]:=j;
end;
end;
end;
npro:=ntp;
pro:=tp
until ntp=0;
writeln('NEVAR');
close(output);
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -