用队列计算并打印杨辉三角的前8行 请高手来调试啊啊啊啊啊啊
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用队列计算并打印杨辉三角的前8行 请高手来调试啊啊啊啊啊啊相关的知识,希望对你有一定的参考价值。
void Out_Number(int n) // 利用队列Q打印n行杨辉三角形
int s1,s2; queue Q; // 用queue代表某种队列类型
cout<<1<<endl; // 输出第一行上的1
Q.append(1); // 所输出的1入队
for(i=2; i<=n; i++) // 依次计算并输出第2~i行上的数据
s1=0; // 存放前一个出队的数
for(j=1; j<=i-1; j++) //计算并输出第i行上前 i-1 个数据
s2=Q.serve( ); // 取队头元素
cout<<s1+s2; // 计算并输出当前行中的一个元素
Q.append(s1+s2); // 所输出的当前行中的元素入队
s1=s2; // 调整变量的值
cout<<1<<endl; // 输出当前行中的最后一个元素1并换行
Q.append(1); //本行最后的1入队
看名字像是取元素啊(出队的方法名字一般是pop()之类的)?
这里应该要出队一个元素才对。 参考技术A 好像没有错!
利用队列打印出n行杨辉三角形.用C语言
参考技术A其实根据原理来就可以了,程序在附件中,运行结果如下:
#define HANG 10
#define MAX 100
#define X(a) (a++)%MAX
int main()
int queue[MAX];
int r=0,l=0,n,m,i,j;
queue[X(r)]=0;
queue[X(r)]=1;
m=queue[X(l)];
for(i=0;i<HANG;i++)
queue[X(r)]=0;
for(j=0;j<i+2;j++)
n=m;
m=queue[X(l)];
queue[X(r)]=m+n;
if(n!=0)
printf("%d ",n);
printf("\n");
return 0;
追问
是那种输入n行然后打印的,这个是我们数据结构的题目
追答#include
#define MAX 100
#define X(a) (a++)%MAX
int main()
int queue[MAX];
int r=0,l=0,n,m,i,j,h;
printf("输入杨辉三角的行数:");
scanf("%d",&h);
queue[X(r)]=0;
queue[X(r)]=1;
m=queue[X(l)];
for(i=0;i<h;i++)
queue[X(r)]=0;
for(j=0;j<i+2;j++)
n=m;
m=queue[X(l)];
queue[X(r)]=m+n;
if(n!=0)
printf("%d ",n);
printf("\n");
return 0;
以上是关于用队列计算并打印杨辉三角的前8行 请高手来调试啊啊啊啊啊啊的主要内容,如果未能解决你的问题,请参考以下文章
打印杨辉三角形(Pascal's triangle)——利用队列
杨辉三角队列的实现 利用循环顺序队列打印杨辉三角。杨辉三角的特点是两个腰上的数字都为1,其它位置上的