zoukankan      html  css  js  c++  java
  • [acm]循环队列(不是自己写queue)

    这是个很简单的用c++ stl实现的queue,不是用class重新写一次,这个算法可以用于一些数字的循环筛选中

    思路:

    首先还是用stl来创建一个queue

    1 queue<int> a

    因为queue的pop机制是删除队首的元素,而我们在进行筛选的时候可能数字都是在队列中间的所以直接pop是行不通的所以我们就可以通过每次循环都判断队首是不是要筛选的元素,都先出队列,如果不是的话我们就又再次入队列,这样就实现了一轮循环了。

    下图,假设我们要每计数4次,就要踢出一个元素:

    下一个元素就是2,同样的道理.........

    代码实现:

     1 int cnt=1;
     2     while(1){
     3         if(a.size()==1){//判断最后剩下一个数就停止
     4             break;
     5         }
     6         int temp;//先存着,如果是就不要了,如果不是就又入队
     7         temp=a.front();
     8         a.pop();
     9         if(cnt==4){
    10             cnt=1;
    11             continue;
    12         }
    13         else{
    14             a.push(temp);
    15             cnt++;
    16         }
    17     }

    这个算法呢,只适用于队列较小的时候,如果数字太大肯定就要超时的。

  • 相关阅读:
    结构-行为-样式-有趣的函数
    结构-行为-样式-angularJs笔记
    Js-Html 前端系列--页面撑开头尾
    Java 实现下载
    Js-Html 前端系列--Ajax
    Js-Html 前端系列--checkbox
    Nutz中过滤特殊字符
    NUTZ中处理系统未捕获异常
    Thymeleaf 笔记
    Json 使用小结
  • 原文地址:https://www.cnblogs.com/hoppz/p/12591060.html
Copyright © 2011-2022 走看看