Uva-11995-I Can Guess the Data Structure!

来源:互联网 发布:淘宝店铺首页怎么弄 编辑:程序博客网 时间:2024/06/10 21:53

这个题就是给你2个操作,让你根据这些操作判断这些操作数据哪种类型(队列,栈,优先队列)。

用C++ STL模拟一下就可以了,注意可能出现同时满足2种类型以及可能一种都不满足的情况。

代码:

#include<cstdio>#include<cstring>#include<iostream>#include<queue>#include<stack>using namespace std;int main(){    int n;    while(scanf("%d",&n)!=EOF)    {int op,val,isst=0,ispq=0,isq=0;queue<int> q;priority_queue<int> qq;stack<int> s;for(int i=0;i<n;i++){    scanf("%d%d",&op,&val);    if(op==1)    {q.push(val);qq.push(val);s.push(val);    }    else    {int ita;if(!isq){    if(!q.empty())    {ita=q.front();q.pop();if(ita!=val)    isq=1;    }    elseisq=1;}if(!ispq){    if(!qq.empty())    {ita=qq.top();qq.pop();if(ita!=val)    ispq=1;    }    elseispq=1;}if(!isst){    if(!s.empty())    {ita=s.top();s.pop();if(ita!=val)    isst=1;    }    elseisst=1;}    }}int sum=ispq+isst+isq;if(sum==3){    printf("impossible\n");    continue;}if(sum<2){    printf("not sure\n");}else{    if(!isq)printf("queue\n");    else if(!ispq)printf("priority queue\n");    elseprintf("stack\n");}    }    return 0;}


原创粉丝点击