用C++队列模板实现杨辉三角的输出

如何用C++实现杨辉三角的输出,首先我们来分析杨辉三角的数学规律:

1、每行的第一和最后一个数都为1;

2、除去前两行,每个数是其上一行对应位置的两个数之和

我们把规律2推广,即在每一行的前排采用补0的方法,使第二行开始的每个数都是上一行对应位置两个数的和

利用规律2,我们知道可以用上一行的元素求出下一行的元素,在这里我们选择队列的方式,用队列保存上一行元素,来求本行元素

使用过的数在队列中出栈,新的数进栈。这样一次次更新。

#include<iostream>
#include<queue>
using namespace std;

void Out_number(int n)
{
	int s1, s2;
	queue<int> Q;
	cout << "       "<<1 << endl;
	Q.push(1);
	for (int i = 2;i <= n;i++)
	{	
		for (int j = 0;j < n - i;j++)
			cout << " ";
		s1 = 0;
		for (int j = 1;j <= i - 1;j++)
		{
			s2 = Q.front();
			Q.pop();
			cout  << s1 + s2 << " ";
			Q.push(s1 + s2);
			s1 = s2;
		}
		cout  << 1<<endl;
		Q.push(1);
	}
}
int main()
{
	int n; //记录要输出的行数
	cout << "输入行数:" << endl;
	cin >> n;
	Out_number(n);

	return 0;
}

    原文作者:杨辉三角问题
    原文地址: https://blog.csdn.net/L779399442/article/details/60756161
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞