以等腰三角形形式打印杨辉三角。
例如:
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
代码如下:
void
print_line(
int
* line,
int
ln,
int
line_width)
{
int
wscount = (line_width-((ln+1)*4+ln))/2;
for
(
int
i=0; i<wscount; ++i)
printf(
" "
);
for
(
int
i=0; i<ln; ++i)
{
printf(
"%4d "
, line[i]);
}
printf(
"%4d\n"
, line[ln]);
}
// calculate next line of yanghui triangle
void
next_line(
int
* line,
int
ln)
{
int
last_col = line[0];
for
(
int
col=1; col<=ln; ++col)
{
int
tmp = line[col];
line[col] += last_col;
last_col = tmp;
}
line[ln+1] = 1;
}
void
print_yanghui(
int
n)
{
if
(n<=0)
return
;
// allocate one more int to avoid that next_line function writes after the end.
int
* line =
new
int
[n+1];
line[0] = 1;
int
line_width = n*4+(n-1);
for
(
int
ln=0; ln<n; ++ln)
{
print_line(line, ln, line_width);
next_line(line, ln);
}
delete
[]line;
}
int
main () {
for
(
int
i=0; i<12; ++i)
print_yanghui(i);
return
0;
}