蛇行方阵 pascal

来源:百度知道 编辑:UC知道 时间:2024/06/05 09:21:08
4、任给n,试按如下方式对A[I,j]赋值,例如:
Enter n : 6
1 2 6 7 15 16
3 5 8 14 17 26
4 9 13 18 25 27
10 12 19 24 28 33
11 20 23 29 32 34
21 22 30 31 35 36

program like006;
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)