这是第一段。。。。
![[汗]](/static/emoticons/u6c57.png)
program zoumigong;
uses crt;
label 9;
type
t4=record
g:char;
gone:boolean;
end;
t1=record
x,y:integer;
end;
var
m:array[1..255,1..255] of t4;
now:t1;
i,j,n:integer;
ok:boolean;
procedure check;
type
t3=^t2;
t2=record
xx,yy:integer;
next:t3;
end;
var
a,b:^t2;
i:integer;
begin
new(b); a:=b;
for i:=2 to (n*n div 2+1) do begin
new(a^.next); a:=a^.next;
end;
a^.next:=b; b^.xx:=1; b^.yy:=1; m[1,1].gone:=true;
repeat
a:=a^.next;
if (a^.xx-1>0) then
if (m[a^.xx-1,a^.yy].g<>'@') then
if m[a^.xx-1,a^.yy].gone<>true then begin
b:=b^.next; b^.xx:=a^.xx-1; b^.yy:=a^.yy; m[b^.xx,b^.yy].gone:=true;
end;
if (b^.xx=n)and(b^.yy=n) then break;
if (a^.xx+1<=n) then
if (m[a^.xx+1,a^.yy].g<>'@') then
if m[a^.xx+1,a^.yy].gone<>true then begin
b:=b^.next; b^.xx:=a^.xx+1; b^.yy:=a^.yy; m[b^.xx,b^.yy].gone:=true;
end;
if (b^.xx=n)and(b^.yy=n) then break;
if (a^.yy+1<=n) then
if (m[a^.xx,a^.yy+1].g<>'@') then
if m[a^.xx,a^.yy+1].gone<>true then begin
b:=b^.next; b^.xx:=a^.xx; b^.yy:=a^.yy+1; m[b^.xx,b^.yy].gone:=true;
end;
if (b^.xx=n)and(b^.yy=n) then break;
if (a^.yy-1>0) then
if (m[a^.xx,a^.yy-1].g<>'@') then
if m[a^.xx,a^.yy-1].gone<>true then begin
b:=b^.next; b^.xx:=a^.xx; b^.yy:=a^.yy-1; m[b^.xx,b^.yy].gone:=true;
end;
if (b^.xx=n)and(b^.yy=n) then break;
until (a=b);
ok:=(b^.xx=n)and(b^.yy=n);
end;