杨辉三角队列的实现 利用循环顺序队列打印杨辉三角。杨辉三角的特点是两个腰上的数字都为1,其它位置上的
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了杨辉三角队列的实现 利用循环顺序队列打印杨辉三角。杨辉三角的特点是两个腰上的数字都为1,其它位置上的相关的知识,希望对你有一定的参考价值。
利用循环顺序队列打印杨辉三角。杨辉三角的特点是两个腰上的数字都为1,其它位置上的数字是其上一行中与之相邻的两个整数之和。所以在打印过程中,第i行上的元素要由第i-1行中的元素来生成。在循环队列中依次存放第i-1行上的元素,然后逐个出队并打印,同时生成第i行元素并入队列。打印的杨辉三角形如下所示:
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
1 6 15 20 15 6 1
1 7 21 35 35 21 7 1
#define N 11
void main()
int i,j,a[N][N];
for(i=1;i<N;i++)
a[i][i]=1;
a[i][1]=1;
for(i=3;i<N;i++)
for(j=2;j<i;j++)
a[i][j]=a[i-1][j-1]+a[i-1][j];
for(i=1;i<N;i++)
for(j=1;j<=i;j++)
printf("%6d",a[i][j]);
printf("\n");
参考技术B #include <stdio.h>
#define K 10
void main()
int i,j,a[K][K];
for(i=1;i<K;i++)
a[i][i]=1;
a[i][1]=1;
for(i=3;i<K;i++)
for(j=2;j<i;j++)
a[i][j]=a[i-1][j-1]+a[i-1][j];
for(i=1;i<K;i++)
for(j=1;j<=i;j++)
printf("%5d",a[i][j]);
参考资料:C++6编程书原题
参考技术C 根本不必用队列知识怎么实现输出杨辉三角?
参考技术A #include <stdio.h>#define N 10 /*输出N行的杨辉三角,这里输出6行*/
#define D "%5d"
void main()
int yh[N][N]=0/*行数与列数必须相同,否则会出错.而且必须定义时定将数组赋值为0,否则可能会出现随机数字*/,y,x;
for(x=0;x<N;x++)
for(y=0;y<=x;y++) //X表示行Y表示列
if(y==0)
yh[x][y]=1;
printf(D,yh[x][y]);
continue;/*提前跳出循环*/
yh[x][y]=yh[x-1][y]+yh[x-1][y-1];
printf(D,yh[x][y]);/*这里是赋值后即时输出,也可以改为先赋值,再一次输出*/
printf("\n");
//规律是当前数等于它的上一行同一列的数字加上上一行前一列的数字,若定义整型变量yh[][]为杨辉三角
//,x表示行,y表示列,则得出:yh[x][y]=yh[x-1][y]+yh[x-1][y-1]//本回答被提问者采纳
以上是关于杨辉三角队列的实现 利用循环顺序队列打印杨辉三角。杨辉三角的特点是两个腰上的数字都为1,其它位置上的的主要内容,如果未能解决你的问题,请参考以下文章