用队列实现杨辉三角

如题,首先,可以从杨辉三角可以知道,它的每个数等于它上方两数之和、每行第一个数和最后一个数都是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 (Queue.Front == Queue.Rear)
        return true;
    else
  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值