讨论 / 谁告诉我为什么第三个点出错了
fascal 2010-10-13 18:34:00
点我顶贴 收藏 删除
program OvO;

const

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

var

map:array[1..1000,1..1000]of char;

f:array[1..1000,1..1000]of boolean;

i,j:longint;

n,si,sj,ei,ej:integer;

q:array[1..1000000,1..3]of longint;

h,t:longint;

k:integer;

begin

readln(n);

for i:=1 to n do begin for j:=1 to n do read(map[i,j]);readln;end;

fillchar(f,sizeof(f),true);

readln(si,sj);

readln(ei,ej);

h:=0;t:=1;

q[t,1]:=si;q[t,2]:=sj;q[t,3]:=0;

while h<>t do

begin

h:=h+1;

si:=q[h,1];sj:=q[h,2];

for k:=1 to 4 do

begin

i:=si+w[k,1];

j:=sj+w[k,2];

if (i=ei) and (j=ej) then begin writeln(q[h,3]+1);halt;end;

if (map[i,j]='0') and (f[i,j]) then

begin

t:=t+1;

q[t,1]:=i;

q[t,2]:=j;

q[t,3]:=q[h,3]+1;

f[i,j]:=false;

end;

end;

end;

end.

#1 qkgecn@2010-10-13 18:21:00
回复 删除
表示你自己看下...我背初赛东西去了...

program p34;

const

x1:array[1..4]of longint=(0,-1,0,1);

y1:array[1..4]of longint=(1,0,-1,0);

var

n,i,j,l,r,x,y,x2,y2,xx,yy:longint;

t:char;

a:array[0..1001,0..1001]of longint;

v:array[0..1001,0..1001]of boolean;

q:array[0..1000001,1..2]of longint;

f:boolean;

begin

readln(n);

fillchar(v,sizeof(v),true);

for i:=1 to n do

begin

for j:=1 to n do

begin

read(t);

if t='1' then v[i,j]:=false;

end;

readln;

end;

readln(x,y);

v[x,y]:=false;

a[x,y]:=0;

readln(x2,y2);

l:=1;

r:=1;

q[1,1]:=x;

q[1,2]:=y;

f:=false;

for i:=0 to n+1 do

begin

v[i,0]:=false;

v[i,n+1]:=false;

v[0,i]:=false;

v[n+1,i]:=false;

end;

repeat

xx:=q[l,1];

yy:=q[l,2];

for i:=1 to 4 do

begin

if v[xx+x1[i],yy+y1[i]] then begin

if (xx+x1[i]=x2)and(yy+y1[i]=y2) then begin

f:=true;

break;

end

else begin

inc(r);

q[r,1]:=xx+x1[i];

q[r,2]:=yy+y1[i];

v[xx+x1[i],yy+y1[i]]:=false;

a[xx+x1[i],yy+y1[i]]:=a[xx,yy]+1;

end;

end;

end;

inc(l);

until f ;

writeln(a[xx,yy]+1);

end.

#2 fascal@2010-10-13 18:34:00
回复 删除
其实我找出来了 刚找出来……再入队的时候没有判断0<i<=n 0<j<=n 少了这个判断条件 直接就入队 但是还能得90分 为什么会得90分啊
查看更多回复
提交回复