uva11995 I Can Guess the Data Structure!(基本資料結構)
阿新 • • 發佈:2019-01-01
題意:給定一系列操作,讓你判斷是否是棧,佇列,優先佇列
思路:直接用STL的模擬一波就好了
#include<iostream> #include<cstdio> #include<stack> #include<queue> #include<string> using namespace std; int main() { int n; while(scanf("%d",&n)!=EOF) { queue<int>q; stack<int>s; priority_queue<int>qq; int isqueue = 1; int isstack = 1; int ispriqueue = 1; for(int i = 1;i<=n;i++) { int op,v; scanf("%d%d",&op,&v); if(op==1) { q.push(v); s.push(v); qq.push(v); } else { if(!q.empty()) { int vv = q.front(); if(!q.empty()) q.pop(); if(vv!=v) isqueue = 0; } else isqueue = 0; if(!s.empty()) { int vv = s.top(); s.pop(); if (vv!=v) isstack = 0; } else isstack = 0; if(!qq.empty()) { int vv = qq.top(); qq.pop(); if(vv!=v) ispriqueue = 0; } else ispriqueue = 0; } } if(isstack&&isqueue&&ispriqueue) { printf("not sure\n"); } else if (!isstack && !isqueue&&!ispriqueue) { printf("impossible\n"); } else if (isstack && !isqueue && !ispriqueue) printf("stack\n"); else if (isqueue && !isstack && !ispriqueue) printf("queue\n"); else if (ispriqueue && !isstack && !isqueue) printf("priority queue\n"); else printf("not sure\n"); } }