如题,首先,可以从杨辉三角可以知道,它的每个数等于它上方两数之和、每行第一个数和最后一个数都是1。
那么怎么用队列去实现它呢?
首先可以想到,队首和队尾分别指向相邻的两行。每当队首出一个元素,就生成一个队尾的元素入队。
那么问题来了,杨辉三角的特性可以知道:第n行比第n-1行多一个元素,这就导致入队和出队不匹配,每行入队的元素比出队的元素多一。
解决方案是,对于每行,都先把0先入队当成这行的第一个元素。这样入队和出队就平衡了。
具体实现思路:
1. 首先让0和1入队成为第一行。
2. 对于余下的每行,先让0入队
3. 每次先出一个元素和队首元素相加,总和入队。
具体的代码实现如下:
#include <stdio.h>
#define MAX 1000
struct Queue{
int sq[MAX];
int Front;
int Rear;
}Queue;
bool emty()
{
if