螺旋三角 PASCAL

来源:百度知道 编辑:UC知道 时间:2024/06/03 21:26:58
输入一个数 为三角形的边长 输出的是一个螺旋三角形 例如
输入 N=5
输出 1
2 12
3 13 11
4 14 15 10
5 6 7 8 9
************1
***********2 ,12
*********3 13 ,11
*******4 ,14 ,15 ,10
*****5 , 6 ,7 , 8 , 9 没有逗号和*的 我是为了便于分开

program baidu;{螺旋三角形}
var
a:array[1..20,1..20]of byte;
x,y,i,j,n:byte;
function ok(x,y:byte):boolean;
begin
ok:=false;
if (x<=n)and(y<=n)then
if i<=n*(n+1)div 2 then
if a[x,y]=0 then
ok:=true;
end;

BEGIN
repeat
readln(n);
until (n>0)and(n<=20);
i:=1;x:=0;y:=1;
fillchar(a,sizeof(a),0);
repeat
while ok(x+1,y)do
begin inc(x);a[x,y]:=i;inc(i);end;
while ok(x,y+1)do
begin inc(y);a[x,y]:=i;inc(i);end;
while ok(x-1,y-1)do
begin dec(x);dec(y);a[x,y]:=i;inc(i);end;
until i>n*(n+1)div 2;
for i:=1 to n do
begin
write('':2*(n-i));
for j:=1 to i do write(a[i,j]:4);
writeln
end;
END.