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

本文介绍如何利用C++的队列模板来实现杨辉三角的输出。通过分析杨辉三角的数学规律,如每行首尾为1,其他数由上一行对应位置的两个数相加得出,采用补0的方法,并使用队列存储上一行元素,动态生成下一行,依次更新队列完成输出。
摘要由CSDN通过智能技术生成

如何用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 << " ";
	
C++ 中,可以使用队列(queue)数据结构来模拟杨辉三角(Pascal's Triangle),因为队列的特点是先进先出(FIFO),非常适合存储和访问三角形的行。杨辉三角是一个逐行生成的数阵,每一行的第一个和最后一个数字都是 1,其他数字则是由上一行的相邻数字相加得到。 下面是一个简单的 C++ 示例,利用队列实现杨辉三角: ```cpp #include <iostream> #include <queue> void printPascalTriangle(int rows) { std::queue<std::pair<int, int>> triangle; triangle.push({0, 1}); // 初始化第一行 for (int i = 1; i <= rows; ++i) { while (!triangle.empty() && triangle.front().first >= i) { triangle.pop(); // 移除已超过当前行的元素 } if (triangle.empty()) { // 添加新行的第一项 triangle.push({i, 1}); } else { triangle.push({i - 1, triangle.front().second}); // 添加当前行的其它项 triangle.push({i, triangle.front().second + triangle[++triangle.size()].second}); // 计算并添加当前项 } for (size_t j = 0; j <= i; ++j) { std::cout << triangle.front().second << ' '; triangle.pop(); } std::cout << '\n'; } } int main() { int rows = 5; printPascalTriangle(rows); return 0; } ``` 在这个示例中,我们首先创建一个队列 `triangle` 存储当前行的数字对,然后迭代每一行,根据队列中的信息计算新的项,并将它们放入队列。当需要开始新的一行时,我们会检查队列是否为空,如果空则添加起始的 1,否则继续计算和添加后续项。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值