主题:请教下杨辉三角型
dongchengok
[专家分:20] 发布于 2005-01-09 05:35:00
[em18]请教一下各位高手杨辉三角形大家怎么做的啊~我是先定义了一个函数算组合数,还有什么好办法吗?
回复列表 (共22个回复)
板凳
dongchengok [专家分:20] 发布于 2005-01-13 15:03:00
不太明白,能给我讲讲吗?谢谢啊[em9]
3 楼
天才少年987987987 [专家分:1420] 发布于 2005-01-19 21:17:00
我以七阶为例,给你讲一下:
program gdshs;
var
a:array[1..7,1..13] of integer;
i,j,k:integer;
begin
for i:=1 to 7 do
begin
for j:=1 to 13 do
a[i,j]:=0; {先把数组的全部元素赋为0}
a[i,7-(i-1)]:=1; {第i行的第一个非空元素赋1}
a[i,7+(i-1)]:=1; {第i行的最后一个非空元素赋1}
for k:=1 to i-2 do {第i行共有i-2个非首末非空元素,需填数}
begin
j:=7-(i-1)+2*k; {计算非首末非空元素的纵坐标}
a[i,j]:=a[i-1,j-1]+a[i-1,j+1]; {赋为肩膀上两数之和}
end;
for j:=1 to 13 do
if a[i,j]=0 then write(' ');
else write(a[i,j]:2);
writeln;
end;
end.
4 楼
愿望 [专家分:0] 发布于 2005-01-28 14:45:00
其实一维数组才最节省空间
杨辉三角形主要的问题就是对齐不容易做到
5 楼
hackert [专家分:0] 发布于 2005-01-28 19:01:00
这个比较简单嘛~(我是小学生,方法可能很简单)[em12][em12][em12][em12]
program tyk;
const
n=5;{这里定阶数}
var
a:array[1..n,1..n];
i,j:integer;
begin
fillchar(a,sizeof(a),0);
for i:=1 to n do a[i,1]:=1;
for i:=2 to n do begin
for j:=2 to n do begin
a[i,j]:=a[i-1,j-1]+a[i-1,j];
end;
end;
for i:=1 to n do begin
for j:=1 to n do begin
if a[i,j]<>0 then write(a[i,j]);
end;
writeln;
end;
end.
另:我没经过调试,也许不对,望指出。
6 楼
浣浣 [专家分:0] 发布于 2005-02-16 14:14:00
你们说得我还是不太懂
我刚学
希望大家多多指教
7 楼
浣浣 [专家分:0] 发布于 2005-02-16 14:16:00
program ex7;
var i,j,n:integer;
a:array[1..34,1..34] of integer;
begin
read(n);
for i:=1 to n do
for j:=1 to n do
a[i,j]:=0;
for i:=1 to n do
for j:=1 to n do
begin
if j=1 then a[i,j]:=1;
if i=j then a[i,j]:=1;
if i>=3 then a[i,j]:=a[i-1,j]+a[i-1,j-1];
end;
for i:=1 to n do
for j:=1 to i do
write(a[i,j]);
end.
谁来帮我指出这错再哪了
谢谢了[em15]
8 楼
faintzw [专家分:2660] 发布于 2005-02-16 14:23:00
格式错了。至少得加个writeln吧
9 楼
浣浣 [专家分:0] 发布于 2005-02-17 11:40:00
再哪加呀
能不能再告诉我呀
[em18]
10 楼
faintzw [专家分:2660] 发布于 2005-02-17 13:08:00
for i:=1 to n do
for j:=1 to i do
write(a[i,j]);
end.
就这部分啦……得换行,如果可以的话还要处理格式
我来回复