迂回方阵 pascal

来源:百度知道 编辑:UC知道 时间:2024/05/22 20:07:05
谁会迂回方阵?快来多分!

program sxfz;
var
a:array[1..20,1..20] of integer;
c,t,k,r,n:integer;
begin
writeln('n=');
read(n);
t:=1;k:=1;
for r:=1 to n do
for c:=1 to n do
a[r,c]:=0;
r:=1;c:=1;t:=2;a[1,1]:=1;
while (t<=n*n) do
case k of
1: begin
r:=r+1;
a[r,c]:=t;
t:=t+1;
if c=1 then k:=3;
if c=n then k:=4;
end;
2: begin
c:=c+1;
a[r,c]:=t;
t:=t+1;
if r=1 then k:=4;
if r=n then k:=3;
end;
3: begin
r:=r-1;
c:=c+1;
a[r,c]:=t;
t:=t+1;
if (r=1) then k:=2;
if (c=n) then k:=1;
end;
4: begin
r:=r+1;
c:=c-1;
a[r,c]:=t;
t:=t+1;
if (r=n) then k:=2;
if (c=1)and(r<>n) then k:=1;
end;
end;
for r:=1 to n do
begin
for c:=1 to n do
write(a[r,c]:4);
writeln;
end;
readln;
readln
end.
还是: