讨论 / 求助
lzpxh 2010-08-12 04:22:00
点我顶贴 收藏 删除
program oneninefive;

type data=record

x:integer;

y:integer;

s:longint;

end;

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

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

var n,i,j,x1,x2,y1,y2:integer;

first,last:longint;

s1:ansistring;

a:array[1..2000,1..2000] of 0..1;

dl:array[1..10000001] of data;

t:boolean;

begin

readln(n);

for i:=1 to n do begin

read(s1);

for j:=1 to n do a[i,j]:=ord(s1[j])-ord('0');

readln;

end;

readln(x1,y1); readln(x2,y2);

dl[1].x:=x1; dl[1].y:=y1; first:=1; last:=1; t:=false; dl[1].s:=0;

repeat

for i:=1 to 4 do

if (dl[first].x+dx[i]>0) and (dl[first].y+dy[i]>0) and

(dl[first].x+dx[i]<=n) and (dl[first].y+dy[i]<=n) then

if (a[dl[first].x+dx[i],dl[first].y+dy[i]]=0) then

begin last:=last+1; dl[last].x:=dl[first].x+dx[i]; dl[last].y:=dl[first].y+dy[i];

dl[last].s:=dl[first].s+1; end;

if (dl[first].x=x2) and (dl[first].y=y2) then t:=true else begin a[dl[first].x+dx[i],dl[first].y+dy[i]]:=1; first:=first+1; end;

until t;

if t then writeln(dl[first].s);

end.

#1 lzpxh@2010-08-12 04:22:00
回复 删除
总是10P,拿别的程序改的..不知道错在哪了
查看更多回复
提交回复