打印杨辉三角形

10 篇文章 0 订阅

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

例如:

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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值