23. 绘声绘色 编程练习

Description

又到了一年一度周老师讲解简单(划掉)毒瘤数据结构的时候辣!

为了让大家更好理解,今年周老师决定和大家玩一个游戏:

假设一个黑盒箱里是某个神奇的数据结构(栈、队列、优先队列之一),每次支持你两种操作:

  •  —— 把元素  丢到这个黑盒里

  •  —— 从这个黑盒弹出一个元素

周老师给定一系列具有返回值的黑盒操作,请你来猜猜看,这是什么数据结构!本题可能用到的数据结构:

  •  —— 栈,元素遵循先进后出原则

  •  —— 队列,元素遵循先进先出原则

  •  ——优先队列(大顶堆),每次从大顶堆取出的元素是堆集合的所有元素中最大的元素

  •  ——优先队列(小顶堆),每次从小顶堆取出的元素是堆集合的所有元素中最小的元素

#include "stdio.h"
#include<iostream>
#include <queue>
#include <bits/stdc++.h>
using namespace std;
int main() 
{
    priority_queue<long long> a; //大顶堆
    priority_queue<long long, vector<long long>, greater<long long> > b;  //小顶堆
    stack<long long> c;//栈
    queue<long long> d;//队列
    int n;
    while(scanf("%d",&n) != EOF){
        long long op, x, xa, xb, xc, xd;
        int flaga = 1, flagb = 1, flagc = 1, flagd = 1;
        while(n--){
            scanf("%lld%lld",&op,&x);
            if(op == 1){
                a.push(x);
                b.push(x);
                c.push(x);
                d.push(x);
            }
            else{
                if(a.empty()||b.empty()||c.empty()||d.empty()){
                    flaga = 0;
                    flagb = 0;
                    flagc = 0;
                    flagd = 0;
                    break;
                }
                else{
                    xa = a.top();
                    xb = b.top();
                    xc = c.top();
                    xd = d.front();
                    a.pop();
                    b.pop();
                    c.pop();
                    d.pop();
                }
                if(xa != x) flaga = 0;
                if(xb != x) flagb = 0;
                if(xc != x) flagc = 0;
                if(xd != x) flagd = 0;
            }
        }
        if(flaga+flagb+flagc+flagd > 1)
            printf("not sure\n");
        else if(flaga+flagb+flagc+flagd == 0) printf("pool zls\n");
        else if(flaga == 1) printf("big priority queue\n");
        else if(flagb == 1) printf("small priority queue\n");
        else if(flagc == 1) printf("stack\n");
        else if(flagd == 1) printf("queue\n");

        while(!a.empty()){
            a.pop();
        }
        while(!b.empty()){
            b.pop();
        }
        while(!c.empty()){
            c.pop();
        }
        while(!d.empty()){
            d.pop();
        }
    }
    return 0;
}

 

开头: 1. 听说2205班的小伙伴们,有着一股超强的凝聚力,他们能集体智慧,创造出惊人的成果。 2. 你知道吗?2205班的小伙伴们,不仅拥有深厚的计算机知识,还有着无限的创意与想象力。 3. 大一的2205班,创新创意,每一次的项目都充满了惊喜。 正文: 1-10秒: 在这个十秒钟里,我们可以看到一个个刻苦努力的小伙伴们,他们在计算机实验室里,敲打着键盘,认真思考着每一个问题。他们的眼神中充满了热情与激情。 11-20秒: 接下来,我们可以看到他们投入到了一个个项目中。他们在团队合作中,相互协作,共同解决问题,打造出了一个个优秀的作品。看着他们的表情,我们可以看到他们的自豪与成就感。 21-30秒: 不仅如此,2205班的小伙伴们还很有创意。他们参加了各种比赛,展现出了不凡的才华。比如,他们设计的APP获得了第一名,他们制作的机器人在比赛中大放异彩…… 31-40秒: “创新、创意、协作、拼搏”,这就是2205班集体的精神。他们不仅在学术方面有着出的表现,还在班级建设上做出了很多努力。他们的凝聚力十分强,经常组织各种活动,让大家更好地融入到班级中来。 41-50秒: 在这个班级中,每个人都是有特的。比如,有的同学善于策划活动,有的同学喜欢写代码,有的同学喜欢设计……但是,他们都有一个共同点——热爱计算机,热爱这个班级。 51-60秒: 最后,让我们来看一下2205班的成果吧。他们制作的网站、APP、游戏等等,在各大比赛中屡获殊荣。他们的成果不仅在学术上有着卓越的表现,更让人感受到了他们的激情与热爱。 结尾: 2205班,一个有着无限可能的班级。他们不断创新,不断进步,为自己的未来奠定了坚实的基础。让我们一起期待着他们更加美好的明天!
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值