UVA - 11995 I Can Guess the Data Structure!(水题)

本文提供了解决一类特定编程问题的方法,通过定义三种数据结构(堆、队列、栈),并利用它们进行问题的模拟与解决。程序通过输入数据构建数据结构,根据操作类型进行相应元素的操作,并最终判断数据结构的状态。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

解析:

水题,定义三种数据结构然后后模拟其情况,然后判断就可以了。

AC代码

#include <cstdio>
#include <cstring>
#include <algorithm>
#include <cmath>
#include <cstdlib>
#include <queue>
#include <stack>
using namespace std;
typedef long long ll;
const int INF = 0x3f3f3f3f;
const int N = 1005;
int ele[N],oper[N];
int n;

int main() {
    bool ans[3];
    while(scanf("%d", &n) != EOF) {
        memset(ans, true, sizeof(ans));
        priority_queue<int> pri_que;
        queue<int> que;
        stack<int> st;
        for(int i = 0; i < n; i++) {
            scanf("%d%d", &oper[i], &ele[i]);
            if(oper[i] == 1) {
                pri_que.push(ele[i]);
                que.push(ele[i]);
                st.push(ele[i]);
            }else {
                if(st.empty() || ele[i] != st.top()) 
                    ans[0] = false;
                else st.pop();

                if(que.empty() || ele[i] != que.front())
                    ans[1] = false;
                else que.pop();

                if(pri_que.empty() || ele[i] != pri_que.top())
                    ans[2] = false;
                else pri_que.pop();
            }
        }
        int cnt = 0;
        for(int i = 0; i < 3; i++) {
            if(ans[i]) cnt++;
        }
        if(cnt == 0)
            puts("impossible");
        else if(cnt >= 2) 
            puts("not sure");
        else if(ans[0]) 
            puts("stack");
        else if(ans[1]) 
            puts("queue");
        else if(ans[2])
            puts("priority queue");
    }
    return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值