您的位置:首页 > 产品设计 > UI/UE

uva 11995 I Can Guess the Data Structure!

2014-06-19 22:57 351 查看
水题一道,做着玩

#include <stdio.h>
#include <stack>
#include <queue>
using namespace std;

int main(void){
int n, i;
int oper, data;
queue<int> q;
priority_queue<int> pq;
stack<int> s;
bool pq_possible, q_possible, s_possible;
int count;

//freopen("input.dat", "r", stdin);
while(scanf("%d",&n) != EOF){
while(!s.empty()) s.pop();
while(!pq.empty()) pq.pop();
while(!q.empty()) q.pop();
pq_possible = q_possible = s_possible = true;
for(i=1; i<=n; i++){
scanf("%d %d", &oper, &data);
if(1 == oper){
if(s_possible)
s.push(data);
if(q_possible)
q.push(data);
if(pq_possible)
pq.push(data);
}
else{
if(s_possible){
if(!s.empty()){
if(s.top() == data){
s.pop();
}
else{
s_possible = false;
}
}
else{
s_possible = false;
}
}

if(pq_possible){
if(!pq.empty()){
if(pq.top() == data){
pq.pop();
}
else{
pq_possible = false;
}
}
else{
pq_possible = false;
}
}

if(q_possible){
if(!q.empty()){
if(q.front() == data){
q.pop();
}
else{
q_possible = false;
}
}
else{
q_possible = false;
}
}

}
}

count = 0;
if(s_possible)
count ++;
if(pq_possible)
count ++;
if(q_possible)
count ++;
if(count >= 2){
printf("not sure\n");
}
else{
if(count == 0){
printf("impossible\n");
}
else{
if(s_possible){
printf("stack\n");
}
if(pq_possible){
printf("priority queue\n");
}
if(q_possible){
printf("queue\n");
}
}
}

}

return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  acm uva