C++——队列应用——显示二项式系数

队列应用——显示二项式系数

二项式(a+b)^i展开的系数构成杨辉三角形(Pascal三角形)
每一行的首位都是1,中间的数值ai为上一层a(i-1)与ai之和,以此类推。
我们利用队列的FIFO的特点来存储每层的数值,将三角形按照层次顺序依次存储在队列里。

#include 
#include 

using namespace std;

void yanghuiTriangle(int n)
{
    queue<int> q;
    int s,t;

    q.push(1); q.push(1);
    cout << 1<<"\t"<<1;
    for(int i=2;i<=n;i++){
        cout <<endl;
        q.push(1);
        cout <<1<<"\t";
        s=q.front();
        q.pop();
        for(int j=2;j<=i;j++)
        {
            t=q.front();  //t为第i-1行第j个元素的值
            q.pop();
            q.push(s+t);   //s+t为第i行第j个元素的值
            cout << s+t <<"\t";  
            s=t;
        }
        q.push(1);
        cout << 1;
    }
    cout <<endl;
}
int main()
{
    yanghuiTriangle(4);
    return 0;
}

你可能感兴趣的:(数据结构与算法)