如何输出杨辉三角

aaaalook 2009-10-25 02:48:55
用循环队列实现
...全文
54 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
cblcz 2009-10-25
  • 打赏
  • 举报
回复
void yanghui ( int n ) 
 {
  // 打印输出杨辉三角的前 n( n>0 )行
  Queue Q;
  for( i=1; i<=n; i++)
  cout<< ' ';
  cout<< '1'<<endl;      // 在中心位置输出杨辉三角最顶端的"1"
  InitQueue(Q,n+2);       // 设置最大容量为 n+2 的空队列
  EnQueue(Q,0 );        // 添加行界值
  EnQueue( Q,1);
  EnQueue( Q,1 );      // 第一行的值入队列
  k = 1;
  while ( k < n )
  {             // 通过循环队列输出前 n-1 行的值
   for( i=1; i<=n-k; i++)
    cout<< ' ';       // 输出n-k个空格以保持三角型
   EnQueue ( Q,0 );      // 行界值"0"入队列
   do {            // 输出第 k 行,计算第 k+1 行
    Dequeue( Q,s );
    GetHead( Q,e );
    if (e) cout<< e << ' ';
    // 若e为非行界值0,则打印输出 e 的值并加一空格
    else cout << endl;    // 否则回车换行,为下一行输出做准备
    EnQueue(Q,s+e);
    } while (e!=0);
   k++;
  } // while
  DeQueue ( Q,e );       // 行界值"0"出队列
  while (!QueueEmpty (Q) )
  {              // 单独处理第 n 行的值的输出
   DeQueue ( Q,e );
   cout<<e<< ' ';
  } // while
 } // yanghui

64,649

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧