美文网首页
用队列轻松搞定杨辉三角

用队列轻松搞定杨辉三角

作者: 茂财 | 来源:发表于2021-10-28 07:50 被阅读0次

    如果你在用scratch编程中遇到什么问题,一直想不出解决的方法,那么建议你认真阅读完这篇文章,或许能使你茅塞顿开,开悟出精彩的解决方案!这就是数据结构的功劳了,Pascal之父---尼古拉斯·沃斯在1984年获得图灵奖提出的著名公式:“算法+数据结构=程序”,就说明了数据结构的重要性,选择适合的数据结构,再加上算法的加持,我们就可以轻松应对各种问题;其实数据结构也是自带光环、自带“灵性”的,好多经典的数据结构都自带算法在其中,也没必要分的那么清!以上为个人愚见,高手勿喷!~

    图片

    今天这篇,我们来议一下“队列”,本文框架:

    1、杨辉三角

    2、队列及其应用

    3、队列的基本方法

    4、用队列简单搞定杨辉三角

    一、杨辉三角

    关于杨辉三角,百度百科给出的解释是二项式系数在三角形中的一种几何排列,中国南宋数学家杨辉1261年所著的《详解九章算法》一书中出现,在欧洲,这个表叫做帕斯卡三角形。它的大体特征是左右两腰全是1,从第三行起,每个数字等于上一行的左右两个数字之和。

    这几天想用scratch绘制一个杨辉三角,想了好多方法,但大都实现起来都太复杂,队列这个数据模型正好符合杨辉三角的创建规则,下面就是用队列构建绘制杨辉三角的实现过程;but,先来说一说“队列”这个数据模型

    二、队列及其应用

    队列是一种特殊的线性表,特殊之处在于它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作,和栈一样,队列是一种操作受限制的线性表。进行插入操作的端称为队尾,进行删除操作的端称为队头。队列具有以下两个特点:

    1、数据从队列的一端进,另一端出;

    2、数据的入队和出队遵循"先进先出"的原则;也就是FIFO。

    队列多用于处理消息队列、异步,有好多变种,比如双端队列、循环队列、优先队列(堆)等,我们今天只研究单队列,就是单进单出(FIFO)。

    要想使用这个数据模型,就得先要了解它的一些基本的方法

    三、队列的基本操作

    enQueue(item)  # 入队
    

    这些基本操作都可以用scratch模拟出来,虽然是些伪代码,但在处理实际问题时它们的实质是一样的,所以不要看轻每一种语言,只是它们擅长的领域不同罢了!~

    入队

    图片

    出队

    图片

    获取队头元素

    图片

    获取队列长度

    图片

    四、搞定杨辉三角

    1、首先,需要初始化一个队列;

    2、将第一行的元素1入队,接着操作第二行;

    3、从第三行开始,现在的对头指向N-1行,将每行的固定元素1入队,然后循环操作求和:

            将队首元素出队,并保存它的值valueDeque;
    
    获取当前队首的元素valueFront,将(valueDeque+valueFront)入队;
    

    4、循环结束后,队首在N-1行的最后一个元素处,现将其出队,然后将每行最后的固定元素1入队;

    5、循环3、4步就可以输出杨辉三角形了。

    图片

    显示部分没什么技术含量,这里不再贴出,大家自行解决~

    学习和交流QQ群:470085939,或添加私人微信(corax_8088)****,****我们一起scratch!

    相关文章

      网友评论

          本文标题:用队列轻松搞定杨辉三角

          本文链接:https://www.haomeiwen.com/subject/vqimaltx.html