打印杨辉三角形

以等腰三角形形式打印杨辉三角。

比如:

             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;
}

原文地址:https://www.cnblogs.com/lxjshuju/p/7142357.html