讨论 / 悲剧
吴董超 2012-09-16 22:25:00
点我顶贴 收藏 删除
我是一个初学者,大家不要喷啊!

程序调试了N次都没对:

type z=record

q,t:integer;

end;

const f:array[1..4,1..2]of integer=((0,1),(0,-1),(1,0),(-1,0));

var a:array[-1..301,-1..301]of longint;

c:array[1..500000]of z;

n,u,x,y,j,i,q1,q2,q3,time,x1,y1:longint;

begin

readln(n);

for i:=1 to n do begin

readln(x,y,j);

a[x,y]:=j;

a[x-1,y]:=j;

a[x+1,y]:=j;

a[x,y-1]:=j;

a[x,y+1]:=j;

end;

q1:=1;

q2:=1;

if a[0,0]=0 then begin

writeln(0);

halt;

end;

while q1<=q2 do begin

q3:=q2+1;

inc(time);

for i:=q1 to q2 do for j:=1 to 4 do begin

x1:=c[i].q+f[j,1];

y1:=c[i].t+f[j,2];

if (x1>=0)and(y1>=0)and((a[x1,y1]>time)or(a[x1,y1]=0)) and(x1<=301)and(y1<=301) then begin

if a[x1,y1]=0 then begin writeln(time);halt;end;

inc(q2);

c[q2].q:=x1;

c[q2].t:=y1;

a[x1,y1]:=maxlongint;

end;

end;

q1:=q3;

end;

writeln(-1);

end.

#1 郑乐迅@2012-09-16 22:25:00
回复 删除
tell me why

有同感,详情请看“只得了20分。。。”讨论,奖赏3

查看更多回复
提交回复