UVA 11995 (STL_E題)解題報告
阿新 • • 發佈:2018-01-21
esp pri 題目 close 判斷 結構 uva spa div
題目鏈接:https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=3146
--------------------------------------------------------------------------------------------------------------------------------------------------------------------
題意:有一種名叫包的數據類型,要求通過輸入輸出情況判斷是哪種數據類型。
思路:模擬題,將三種數據類型模擬出來,按照操作進行模擬。如果出現不符合的情況,標記出來,最後通過標記分析出來可能的數據結構。
註意:要註意不同情況的初始化,或者將數據類型定義在每種情況的局部。
代碼:
#include<cstdio> #include<stack> #include<queue> using namespace std; int n; int main(void){ while(~scanf("%d",&n)){ int flag[3]={0}; stack<int> s; queueView Code<int> q; priority_queue<int> pq; for(int i =0;i<n;i++){ int a =0;int b =0; scanf("%d %d",&a,&b); if(a ==1){ s.push(b); q.push(b); pq.push(b); }else {if(!s.empty()) { if(s.top() != b) flag[0] = 1; s.pop(); } else flag[0] = 1; if(!q.empty()) { if(q.front() != b) flag[1] = 1; q.pop(); } else flag[1] = 1; if(!pq.empty()) { if(pq.top() != b) flag[2] = 1; pq.pop(); } else flag[2] = 1; } } int count = 0; for(int i =0;i<3;i++){ count+=flag[i]; } if(count ==3) printf("impossible\n"); else if(count<2) printf("not sure\n"); else if(flag[0]==0) printf("stack\n"); else if(flag[1]==0) printf("queue\n"); else if(flag[2]==0) printf("priority queue\n"); } return 0; }
UVA 11995 (STL_E題)解題報告