蛇行矩阵

来源:百度知道 编辑:UC知道 时间:2024/05/16 02:16:56
1 3 4 10 11
2 5 9 12 19
6 8 13 18 20
7 14 17 21 24
15 16 22 23 25
蛇行矩阵用pascal怎么打?

下面的应该可以
var d,i,j,m,n:integer;
a:array[1..10,1..10]of integer;
begin
write('input n(n<11): ');
read(n);
if n>10 then
begin
writeln('n should smaller than 11!');
halt;
end;
i:=1;j:=1;m:=1;d:=1;
repeat
a[i,j]:=m;
case d of
1:begin
i:=i+1;
if j=1 then d:=2
else d:=4;
end;
2:begin
i:=i-1;
j:=j+1;
if j=n then d:=1
else if i=1 then d:=3;
end;
3:begin
j:=j+1;
if i=n then d:=2
else d:=4;
end;
4:begin
i:=i+1;j:=j-1;
if i=n then d:=3
else if j=1 then d:=1;
end;
end;
m:=m+1;
until m>n*n;
for i:=1 to n do
begin
for j:=1 to n do write(a[i,j]:4);
writeln;
end;
read(n);
end.