使用队列打印杨辉三角(c++)

@使用队列打印杨辉三角(c++)

需要注意的我每行前面并没有打印空格,如果你有需要可以自行修改。

#include<bits/stdc++.h>
using namespace std;
void fun(int n) {
    
    
	queue<int>q;
	int temp = 0;//记录队列上一个的数据
	if (n >= 1) {
    
    
		q.push(1);
	}
	for (int i = 0; i < n;i++) {
    
    
		for (int i = 0; i < q.size();i++) {
    
    
			cout << q.front()<<" ";
			q.push(temp + q.front());
			temp = q.front();
			q.pop();
		}
		temp = 0;
		q.push(1);//后入队一个尾部1
		cout << endl;
	}
}
int main() {
    
    
	int n;
	cout << "输入要打印的杨辉三角的行数";
	cin >> n;
	fun(n);
	return 0;
}

效果:

输入要打印的杨辉三角的行数20
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
1 6 15 20 15 6 1
1 7 21 35 35 21 7 1
1 8 28 56 70 56 28 8 1
1 9 36 84 126 126 84 36 9 1
1 10 45 120 210 252 210 120 45 10 1
1 11 55 165 330 462 462 330 165 55 11 1
1 12 66 220 495 792 924 792 495 220 66 12 1
1 13 78 286 715 1287 1716 1716 1287 715 286 78 13 1
1 14 91 364 1001 2002 3003 3432 3003 2002 1001 364 91 14 1
1 15 105 455 1365 3003 5005 6435 6435 5005 3003 1365 455 105 15 1
1 16 120 560 1820 4368 8008 11440 12870 11440 8008 4368 1820 560 120 16 1
1 17 136 680 2380 6188 12376 19448 24310 24310 19448 12376 6188 2380 680 136 17 1
1 18 153 816 3060 8568 18564 31824 43758 48620 43758 31824 18564 8568 3060 816 153 18 1
1 19 171 969 3876 11628 27132 50388 75582 92378 92378 75582 50388 27132 11628 3876 969 171 19 1

下面时使用数组模拟队列去打印杨辉三角的方法,也很简单。

#include<bits/stdc++.h>
using namespace std;
const int MAX_NUM = 10000;
struct Q {
    
    
	int arr[MAX_NUM];
	int head = 0,tail=0;
	int front() {
    
    //得到队的第一个元素
		return arr[head];
	}
	void push(int num) {
    
    //入队
		arr[tail++] = num;
	}

	void pop() {
    
    //出队
		head++;
	}

	int size() {
    
    //得到当前队的大小
		return tail - head;
	}
};

void fun(int n) {
    
    
	Q q;
	int temp = 0;//记录队列上一个的数据
	if (n >= 1) {
    
    
		q.push(1);
	}
	for (int i = 0; i < n;i++) {
    
    
		//需要注意这个q.size(),其实每次调用都会重新计算一次队列的长度,
		for (int i = 0; i < q.size();i++) {
    
     
			q.push(temp + q.front());
			cout << q.size() << "";
			temp = q.front();
			q.pop();
		}
		temp = 0;
		q.push(1);//后入队一个尾部1
		cout << endl;
	}
}

int main() {
    
    
	int n;
	cout << "输入要打印的杨辉三角的行数";
	cin >> n;
	fun(n);
	return 0;
}

猜你喜欢

转载自blog.csdn.net/blastospore/article/details/120873087
今日推荐