zoukankan      html  css  js  c++  java
  • 判断STL的三种类型——UVA11995 I Can Guess the Data Structure!

    http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=497&page=show_problem&problem=3146

    STL的使用,同时注意出栈出队列是的 empty判断

    View Code
    #include<iostream>
    #include<queue>
    #include<stack>
    #include<stdio.h>
    using namespace std;
    
    struct data 
    {
        int v;
        int k;
    
        friend bool operator <(data a,data b){
            return a.v<b.v;
        }
        
    }s[1099];
    int n;
    
    int ceque()
    {
        int i;
        queue<int>qq;
        for(i=1;i<=n;i++){
            if(s[i].k==1)qq.push(s[i].v);
            if(s[i].k==2){
                if(qq.empty()==1)return 0;
                if(qq.front()==s[i].v){
                    qq.pop();continue;
                }
                else return 0;
            }
        }
    
        return 1;
    }
    
    int cesta()
    {
        int i;
        stack<int>sta;
        for(i=1;i<=n;i++){
            if(s[i].k==1)sta.push(s[i].v);
            if(s[i].k==2){
                if(sta.empty()==1)return 0;
                if(sta.top()==s[i].v){
                    sta.pop();continue;
                }
                else return 0;
            }
        }
    
        return 1;
    }
    
    int cepriorityq()
    {
        priority_queue<data>qq;
        int i;
        for(i=1;i<=n;i++){
            if(s[i].k==1)qq.push(s[i]);
            if(s[i].k==2){
                if(qq.empty()==1)return 0;
                if(qq.top().v==s[i].v){
                    qq.pop();continue;
                }
                else return 0;
            }
        }
    
        return 1;
    }
    
    int main()
    {
    
        while(scanf("%d",&n)!=EOF){
            int i;
            for(i=1;i<=n;i++){
                scanf("%d%d",&s[i].k,&s[i].v);
            }
    
            int yq=ceque(),ys=cesta(),ypq=cepriorityq();
            if((yq+ys+ypq)>=2)printf("not sure\n");
            else if(yq)printf("queue\n");
            else if(ys)printf("stack\n");
            else if(ypq)printf("priority queue\n");
            else printf("impossible\n");
        }
    
        return 0;
    }
  • 相关阅读:
    Express 框架中 使用ejs
    Nodejs操作MongoDB数据库
    MongoDB基础操作
    node中的包、npm和模块
    background
    animation
    transition
    transform
    【SpringCloud】各种组件的更新情况
    【SpringCloud】版本选择
  • 原文地址:https://www.cnblogs.com/huhuuu/p/2893399.html
Copyright © 2011-2022 走看看