[队列] 二项式系数值(杨辉三角)

将二项式(a + b)^ i展开,其系数构成杨辉三角形

这里写图片描述

  1. 杨辉三角除第一行外,每一行的值是上一行相邻的两个数相加
  2. 左右的边上都是 1 ,可以看做0 + 1(在最外层加上一个0)
#include
#include
using namespace std;

void Yang(int n)
{
    int count = n;//计数器
    int L = 0, R = 0;//左右模拟的0值
    int first = 1;//第一行的第一个数
    int second = 1;//第一行的第二个数
    int value = 0;//计算需要插入队列的值
    queue<int> s;//s队列
    s.push(first); // 1
    s.push(second); // 1 1
    // 行数>1
    while (count > 1)//循环插入队列
    {
        s.push(R); // 在上一行末尾放一个0,便于操作 
        s.push(1); // 该行从1开始,把1放入
        while (s.front() != 0) //扫描到0,走到最右边了,该行结束
        { //两个两个相加,并加入队列
            value = s.front();
            s.pop();
            value += s.front(); 
            s.push(value);
        }
        s.pop(); //把最右边的标识符0,删除
        count--;
    }

    for (int i = 0; i <= n; i++)//循环输出
    {
        cout << s.front() << " ";
        s.pop();
    }
}

int main()
{
    Yang(5);
    return 0;
}

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