level 14
在Pascal中,我们用一个二维数组来存放它。
type arr=array [1..100,1..100] of integer;
var sz:arr;
2013年06月12日 05点06分
3
level 14
for i:=1 to n do
for j:=1 to n do
if (j=1)or(i=j) then sz[i,j]:=1
else sz[i,j]:=sz[i-1,j]+sz[i,j-1];
2013年06月12日 05点06分
6
level 14
至于输出,要输出成等腰三角形样式,比较困难,
所以一般就输出成我发的第二张图的样式。
for i:=1 to n do
begin
for j:=1 to n do write(sz[i,j],' ');
writeln;
end;
2013年06月12日 05点06分
8
level 14
VB版:
Private Sub
Form_click()
n = Val(Text1.Text)
ReDim a(n + 1, n + 1), b(n + 1, n +
1)
Cls
k = 8
For i = 1 To n
Print String((n - i) * k / 2 + 1, "
");
For j = 1 To i
a(i, 1) = 1
a(i, i) = 1
a(i + 1, j + 1) = a(i, j) + a(i, j +
1)
b(i, j) = Trim(Str(a(i, j)))
Print b(i, j); String(k - Len(b(i, j)), "
");
Next j
Print
Next i
End Sub
2013年06月12日 05点06分
10
level 14
顺便将以下数学的解法:
第n行的m个数可表示为C(n-1,m-1)(n-1下标,m-1上标),即为从n-1个不同
杨辉三角的组合数表示元素中取m-1个元素的组合数。
组合数计算方法:C(n,m)=n!/[m!(n-m)!]
2013年06月12日 05点06分
11
level 14
所以也可以这样写:
program try(input,output);
function fac1(n:integer):longint;{阶乘}
var i:integer;t:longint;
begin
t:=1;
for i:=1 to n do
t:=t*i;
fac1:=t;
end;
function fac2(n,m:integer):integer;{组合}
begin
fac2:=fac1(n)/(fac1(m)*fac1(n-m));
end;
var i,j,n:integer;{变量声明}
begin
writeln('输出几行???');
readln(n);{读入行数}
for i:=1 to n do
begin
for j:=1 to n do write(fac2(i,j),' ');
writeln;
end;
readln;
end.
2013年06月12日 05点06分
12
不好意思啊,fac2中的fac1(n)/(fac1(m)*fac1(n-m))应更改为fac1(n) div (fac1(m)*fac1(n-m))
2013年06月12日 05点06分
level 14
调试以后我改了一下,FPC2.6.0通过:
program try(input,output);
function fac1(n:integer):longint;{阶乘}
var i:integer;t:longint;
begin
t:=1;
for i:=1 to n do
t:=t*i;
fac1:=t;
end;
function fac2(n,m:integer):integer;{组合}
begin
fac2:=fac1(n) div (fac1(m)*fac1(n-m));
end;
var i,j,n:integer;{变量声明}
begin
writeln('输出几行???');
readln(n);{读入行数}
for i:=1 to n do
begin
for j:=1 to i do write(fac2(i-1,j-1),' ');
writeln;
end;
readln;
end.
2013年06月12日 05点06分
13
level 6
var i,j,n:longint;
a:array[1..100,1..100] of longint;
begin
readln(n);
a[1,1]:=1;
for i:=2 to n do
begin
a[i,1]:=1; a[i,i]:=1;
for j:=2 to i-1 do
a[i,j]:=a[i-1,j-1]+a[i-1,j];
end;
for i:=1 to n do
begin
if i<>10 then write(' ':3*n-3*i);
for j:=1 to i do write(a[i,j]:6);
writeln;
end;
end.
2013年06月16日 04点06分
18
level 12
直角三角形
var a:array[1..20,1..20]of longint;
i,j,n:longint;
begin
read(n);
for i:=1 to n do
begin
for j:=1 to i do
if(j=1)or(j=i) then a[i,j]:=1
else a[i,j]:=a[i-1,j]+a[i-1,j-1];
end;
for i:=1 to n do
begin
for j:=1 to i do write(a[i,j]:5);
writeln;
end;
end.
2014年07月08日 03点07分
19