我想用c++中的队列实现打印杨辉三角形,可是一直都是最后一行有错误,弄了半天也不知道为什么,代码如下:

YangHui(intn){SeqQueueq(n+1);inti=1,j,s=0,k=0,t,u;q.EnQueue(i);q.EnQueue(i);//入栈for(i... YangHui(int n){
SeqQueue q(n+1);
int i=1,j,s=0,k=0,t,u;
q.EnQueue(i);
q.EnQueue(i); //入栈
for(i=1;i<=n;i++){
cout<<endl;
cout<<setw(2*n-i*2)<<" "; //设置域宽为2*n-i*2个字符
//for(int m=i;m<=n-1;m++)cout<<" "<<" ";
q.EnQueue(k); //入栈
for(j=1;j<=i+2;j++){
q.DeQueue(t); //出栈
u=s+t;
q.EnQueue(u); //出栈
s=t;
if(j!=i+2)cout<<setw(4)<<s<<' '; //设置域宽为4
}
}
}
比如当n=5时,有如下的显示:

1 1
1 2 1
1 3 3 1
1 4 6 4 1
5 10 10 5 2 6
但是当n=6时,前五行就又对了,第六行又不正确了,显示如下:

1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
6 15 20 15 6 2 7
哪位大神帮帮忙啊!给分析一下,谢谢啦。
展开
 我来答
我爱你乖521
2012-05-02
知道答主
回答量:41
采纳率:0%
帮助的人:20.8万
展开全部
#include<stdio.h>
void main()
{
int a[11][11]={{0}};
int i,j;
a[1][1]=1;
for(i=2;i<=10;i++)
for(j=1;j<=i;j++)
a[i][j]=a[i-1][j-1]+a[i-1][j];
for(i=1;i<=10;i++)
{
for(j=1;j<=i;j++)
printf("%4d",a[i][j]);
printf("\n");
}
}
这是直角三角形的
追问
可是我想用队列来实现啊!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
Jacob_2009
2012-05-10 · TA获得超过173个赞
知道答主
回答量:105
采纳率:0%
帮助的人:104万
展开全部
#include <iostream>
#include <deque>
using namespace std;

int s=0,t=0,rst,j;
deque<int> que;
void main()
{
que.push_back(1);

for(int i=1;i<10;i++)
{
cout<<endl;
que.push_back(0);
for(j=0;j<i+1;j++)
{
rst=que.front();
que.pop_front();
t=rst;
if(rst>0)
cout<< rst<<" ";
que.push_back(s+t);
s=t;
}
}

}
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式