您的位置:首页 > 理论基础 > 数据结构算法

数据结构学习之打印杨辉三角

2013-10-09 11:43 441 查看
//计算杨辉三角
#include<iostream>
#include<cstdlib>
using namespace std;

const int Maxsize=1000;

class Queue{

private:
int ifont,ilast;
int Quevalue[Maxsize];
public:
Queue(){
ifont=ilast=-1;
//初始化数组值全部为-1
memset(Quevalue,-1,Maxsize*sizeof(int));
}
void EnQueue(int item);
int DeQueue();
void print();
};
//数组队列,进队列
void Queue::EnQueue(int item){
Quevalue[++ilast]=item;
}
//数组队列,取队列头
int Queue::DeQueue(){
return Quevalue[++ifont];
}
void Queue::print()
{
cout<<"队列中数据为:"<<endl;
for(int i=0;i<Maxsize;i++)
{
if(Quevalue[i]==-1)
break;
cout<<Quevalue[i]<<" ";
}
cout<<endl;
}

void Yanghuisanjiao(int n){
Queue Q;
int t1,t2;
int i,j;
//先把前3个1进队列
Q.EnQueue(1);
Q.EnQueue(1);
Q.EnQueue(1);
cout<<Q.DeQueue()<<"  n=0"<<endl;
//从i=3开始
for(i=3;i<=n+1;i++){
//进队列
Q.EnQueue(1);
//取前一个队列头
t1=Q.DeQueue();
for(j=2;j<i;j++){
t2=t1;
//取后一个队列头
t1=Q.DeQueue();
//相加后入队列
Q.EnQueue(t1+t2);
cout<<t2<<" ";
}
Q.EnQueue(1);
cout<<t1<<"  n="<<i-2<<endl;
}
Q.EnQueue(0);
while(--i)
cout<<Q.DeQueue()<<" ";
cout<<"  n="<<n<<endl;
Q.print();
}
int main(){
int n;
cout<<"打印杨辉三角,请输入行数n:"<<endl;
cin>>n;
Yanghuisanjiao(n);

system("pause");//暂停控制台
return 0;
}


#include <iostream>
using namespace std;

void main()
{
int i,j,n;
long int k;
long int fact(int);
cout<<"输入一个数:";
cin>>n;
cout<<"杨辉三角"<<endl;
for(i=0;i<=n;i++)
{
//初始化空格
for(int l=0;l<((n-i)*3);l++)
{
cout<<" ";
}
for(j=0;j<=i;j++)
{
//求阶乘计算值
k=fact(i)/fact(j)/fact(i-j);
if(j!=i)
cout<<k<<"    ";
else
cout<<k;
}
cout<<endl;
if(i!=n)
cout<<endl;
}
system("pause");
}
//求c阶乘
long int fact(int c)
{
long int fa;
int i;
fa=1;
for(i=1;i<=c;i++)
{
fa*=i;
}
return fa;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: