杨辉三角形c++队列
时间: 2023-12-11 07:33:41 浏览: 43
以下是使用C++队列实现杨辉三角形的代码:
```c++
#include <iostream>
#include <queue>
using namespace std;
void printPascal(int n) {
queue<int> q;
q.push(1); // 第一行只有一个1
for (int i = 1; i <= n; i++) {
int prev = 0; // 记录上一行的数字
for (int j = 0; j < i; j++) {
int curr = q.front();
q.pop();
cout << curr << " ";
int sum = prev + curr; // 计算当前数字
prev = curr;
q.push(sum); // 将当前数字加入队列
}
q.push(1); // 每行最后一个数字为1
cout << endl;
}
}
int main() {
int n = 5;
printPascal(n);
return 0;
}
```
相关问题
杨辉三角形循环队列c++
杨辉三角形是一个由数字构成的三角形,具有以下特点:
1. 每一行的两个端点数字都为1。
2. 每一行的中间数字都等于上一行相邻两个数字之和。
循环队列是一种数据结构,它可以在固定大小的环形缓冲区中存储元素,并支持高效地插入和删除操作。
下面是一个使用循环队列的实现杨辉三角形的示例代码:
```c
#include <stdio.h>
#define MAX_SIZE 10
void printYangHuiTriangle(int n) {
int queue[MAX_SIZE];
int front = -1, rear = -1;
enqueue(queue, &rear, n);
while (front != rear) {
int size = getSize(front, rear);
for (int i = 0; i < size; i++) {
int num = dequeue(queue, &front);
printf("%d ", num);
if (num > 1) {
enqueue(queue, &rear, num - 1);
enqueue(queue, &rear, num - 1);
}
}
printf("\n");
}
}
void enqueue(int queue[], int *rear, int num) {
*rear = (*rear + 1) % MAX_SIZE;
queue[*rear] = num;
}
int dequeue(int queue[], int *front) {
*front = (*front + 1) % MAX_SIZE;
return queue[*front];
}
int getSize(int front, int rear) {
if (rear >= front)
return rear - front;
else
return MAX_SIZE - front + rear;
}
int main() {
int n;
printf("请输入杨辉三角形的行数:");
scanf("%d", &n);
printYangHuiTriangle(n);
return 0;
}
```
杨辉三角形c++ 代码
下面是一个输出杨辉三角形的C++代码示例:
```
#include <iostream>
#include <iomanip>
using namespace std;
int main() {
int n, i = 0, j = 0;
cin >> n;
int a[n][n];
for (i = 0; i < n; i++) {
for (j = 0; j < i + 1; j++) {
if (j == 0 || j == i) a[i][j] = 1; else a[i][j] = a[i - 1][j - 1] + a[i - 1][j];
}
}
for (i = 0; i < n; i++) {
for (j = 0; j < i + 1; j++) {
cout << setiosflags(ios::left) << setw(8) << a[i][j];
}
cout << endl;
}
cout << endl;
return 0;
}
```
这个代码使用了二维数组来存储杨辉三角形中的数字,然后使用两个嵌套的循环来计算和输出杨辉三角形。在循环中,如果当前数字是第一列或最后一列,那么它的值为1,否则它的值为上一行的左上角和右上角数字之和。最后,使用setw()函数来设置输出的宽度,使输出的数字对齐。