以等腰三角形形式打印杨辉三角。
比如:
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
",
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;
}