zoukankan      html  css  js  c++  java
  • 队列实现杨辉三角

    如图:以下就是一个 杨辉三角图,其中是按照下一行是上一行的数之和得出的,例如第二行 1是第一行加0得出,第三行是第二行1加上0得出1,1加上1得到2,结尾都是1结束。现在我们用队列来实现这个规律,其中有两种方式:

    第一种:从图中我们可以看出第几行就有几个数,也就是说第一行有1个数,第二行有2个数,第三行有3个数以此类推,我们就可以用两个循环来实现。

     上图:

     1 //打印杨辉三角
     2 function outyhui(n) {
     3 var queues=new queue();//定义一个队列
     4 queues.enqueue(1);//把起始值添加到队列中
     5 for (var i=1;i<=n;i++)//控制打印几层
     6 {
     7     var line="";//定义一个字符串进行存储每一行的值
     8     var pare=0;//定义每一行的第几个数的值
     9 for(var j=0;j<i;j++)//控制每一层有几个数
    10 {
    11   var curren= queues.dequeue();//队列进行抛出第一个值
    12   line+=curren+" ";//把当前的值 进行添加到字符串中
    13   var num=curren+pare;//进行计算下一行的值
    14   pare=curren;//上一行中的第几个数的值
    15  queues.enqueue(num)//把下一行的值添加到队列中
    16 }
    17 queues.enqueue(1)//循环之后还剩最后一个值不在队列中,所以当前行还需要添加1到队列中
    18 console.log(line);//进行输出
    19 }
    20 }
    21 outyhui(10)

    第二种:每次打印一行的时候进行添加0到末尾进行识别是在第几行

    function outhhui2(n)
    {
        var que=new queue();
        que.enqueue(1);//队列第一行初始值
        que.enqueue(0);//末尾添加0区分
        for (var i=1;i<=n;i++)//打印几行
        {  var line="";//定义每一行输出的值
        var pre=0;//每行中的第几个数的值,当前进行初始值
        while (true)
        {
            var curren= que.dequeue();//队列中的值进行出列
            if(curren==0)//当前这个值如果为0则表示该行已经结束了
            {   que.enqueue(1);//进行添加每一行中的最后一个值
                que.enqueue(0);//队列中添加0进行区分
                break;
            }else {
                line+= curren+" ";//把当前的值添加到每一行中
                var nextcurren=curren+pre;//获取下一行中的数
                pre=curren;//上一行中第几个数的值
                que.enqueue(nextcurren);//把下一行的数添加到队列中
            }
        }
       console.log(line);
        }
    }
    outhhui2(10)

    实现队列的方法

    function queue() {
        var items=[];
        //添加队列元素
        this.enqueue=function (item) {
            items.push(item);
        }
        //移除队列元素
        this.dequeue=function () {
          return  items.shift();
        }
        //返回队列的头部
        this.head=function () {
            return items[0];
        }
        //队列的大小
        this.size=function () {
            return items.length;
        }
        //清空队列
        this.clear=function () {
           items=[];
        }
        //是否为空
        this.IsEnpty=function () {
            return items.length==0
        }
        //队列的尾节点
        this.tail=function () {
            return items[items.length-1];
        }
    }
  • 相关阅读:
    零基础学python-4.5 标准类型分类
    零基础学python-4.4 常用的一些内建函数
    零基础学python-4.3 对象的比较
    零基础学python-4.2 其他内建类型
    零基础学python-4.1 python对象的简介和标准类型
    7、postman中的Newman插件(可生成html测试报告)
    6、postman cookie和token使用
    5、postman认证方式简单了解
    4、postman动态参数传递(含token详细使用)
    3、postman中tests断言使用
  • 原文地址:https://www.cnblogs.com/97310ZT/p/9613409.html
Copyright © 2011-2022 走看看