zoukankan      html  css  js  c++  java
  • C++STL3--queue

    C++STL3--queue

    一、心得

    STL的这些东西用法都差不多

    二、介绍

    queue数据结构中的队列

    priority_queue优先队列,插入进去的元素都会从大到小排好序

    PS:在priority_queue<ll, vector<ll>, greater<ll> > pq;中
    第一个参数为数据类型,第二个参数为保存数据的容器(默认为vector<int>),第三个参数为元素比较函数(默认为less)。

    STL里面默认用的是 vector. 比较方式默认用 operator< , 所以如果你把后面俩个参数缺省的话,
    优先队列就是大顶堆,队头元素最大。

    三、实例

    UVA136 - Ugly Numbers

    Ugly numbers are numbers whose only prime factors are 2, 3 or 5. The sequence
    1, 2, 3, 4, 5, 6, 8, 9, 10, 12, 15, ...
    shows the first 11 ugly numbers. By convention, 1 is included.
    Write a program to find and print the 1500’th ugly number.
    Input
    There is no input to this program.
    Output
    Output should consist of a single line as shown below, with ‘<number>’ replaced by the number
    computed.
    Sample Output
    The 1500'th ugly number is <number>.

    分析:

    丑数就是所有是2或3或5倍数的数。
    用优先队列从小到大排列丑数
    用set集合判断丑数是否重复

    代码:

     1 /*
     2 set的应用实例吧
     3 还有queue
     4 
     5 丑数就是所有是2或3或5倍数的数。
     6 用优先队列从小到大排列丑数
     7 用set集合判断丑数是否重复 
     8 */
     9 
    10 #include <iostream>
    11 #include <vector>
    12 #include <queue>
    13 #include <set>
    14 using namespace std;
    15 typedef long long LL;
    16 const int coeff[3]={2,3,5}; 
    17 
    18 int main(){
    19     /*
    20     PS:在priority_queue<ll, vector<ll>, greater<ll> > pq;中
    21     第一个参数为数据类型,第二个参数为保存数据的容器(默认为vector<int>),第三个参数为元素比较函数(默认为less)。
    22     */ 
    23     priority_queue<LL,vector<LL>,greater<LL> > pq;
    24     set<LL> s;
    25     pq.push(1);
    26     s.insert(1);
    27     for(int i=1;;i++){
    28         LL x=pq.top();
    29         pq.pop();
    30         if(i==1500){
    31             cout<<"The 1500'th ugly number is "<<x<<".
    ";
    32             break;
    33         }
    34         for(int j=0;j<3;j++){ 
    35             LL x2=x*coeff[j];
    36             if(!s.count(x2)){
    37                 s.insert(x2);
    38                 pq.push(x2);
    39             }
    40         }
    41         
    42     }
    43     return 0;
    44 }

  • 相关阅读:
    【血型】+【星座】准到吓人
    一落叶而知秋为什么有些树到冬天要落叶?
    WebDAV介绍
    Ruby concurrency explained
    lexus.cnblogs.com
    微博拉近了大家的距离
    High Performance Ruby Part 3: nonblocking IO and web application scalability
    Taglib确实减轻了开发负担[转]
    php中urldecode()和urlencode()起什么作用啊
    header中ContentDisposition的作用
  • 原文地址:https://www.cnblogs.com/Renyi-Fan/p/6972733.html
Copyright © 2011-2022 走看看