帮忙编一段pascal程序!

来源:百度知道 编辑:UC知道 时间:2024/05/30 00:07:07
用pascal语言编一道程序!是一道输出矩阵题,内容如下:
例: 输入:21
输出:
16
11 17
7 12 18
4 8 13 19
2 5 9 14 20
1 3 6 10 15 21

var
e,d,n,c,i:integer;
a:array[1..100,1..100] of integer;
begin
readln(n);
n:=trunc(sqrt(n*2));
i:=0;
for c:=n-1 downto 0 do
for d:=1 to n do begin
e:=c+d;
if e<=n then begin
inc(i);
a[e,d]:=i;
end;
end;
for c:=1 to n do begin
for d:=1 to n do if a[c,d]<>0 then write(a[c,d],' ');
writeln;
end;
end.

          16
        11 17
      7 12 18
    4 8 13 19
  2 5 9 14 20
1 3 6 10 15 21
应该是一个塔形的

你没有发现呀,输入21时,他是从1数到21的,从左下解看就知道了
这和那个杨辉三解有点相!想想吧,指点了一点点,应该够用了的!

程序片断:
i:=1;j:=row;row1:=row;
a[row,1]:=1; (row 为行数可以推出来)
while k<=n do
begin
if i=row then
begin
j:=1;i:=row1-1;row1:=row1-1;
k:=k+1;a[i,j]:=k;
end
else