• C++挑选书籍


    C++挑选书籍

    问题描述:

    小明是一位非常好学的同学。为了充分利用寒假的空闲时光,小明打算带一些书回家阅读。这些书分为5个类别:数学(MATH)、哲学(PHIL)、经济学(ECON)、文学(LITE)和艺术(ART)。小明有很多书,但是由于小明的行李箱空间有限,只能带不超过3本书回家。

    为了挑选适合带回家的书,小明为每本书设定了一个期望值。不同的书有不同的书名,期望值也不同。期望值越大,小明就越倾向于带它回家。小明决定通过整理这些书,确定带哪些书回家,请你帮他编写整理书的程序。

    整理前,书摞为空,整理的过程由一系列操作组成,最终形成一摞书。每个操作一定是以下4种操作之一:

    1、添加(ENLIST)

    输入语法为:ENLIST [类别] [书名] [期望值]。

    表示添加一本书到书摞的顶部,这本书的类别、书名、期望值为输入指定。

    例如,操作 ENLIST ECON DASKAPITAL 88 表示添加一本名为《DASKAPITAL》的经济学的书到书摞的顶部,而且小明的期望值为88。

    2、删除(REMOVE)

    输入语法为:REMOVE [书名]。

    表示从书摞中删除一本输入指定书名的书。如果书摞中没有指定书名的书,则不执行任何操作。

    例如,操作 REMOVE BAYESIAN 表示删除书摞中名为《BAYESIAN》的书。

    3、精炼(REFINE)

    输入语法为:REFINE [类别]。

    表示将书摞中指定类别的书全部删除,只保留一本期望值最大的书放到书摞顶部。若指定类别的书不存在,则不执行任何操作。

    例如,操作 REFINE ECON 表示删除所有的经济类的书,仅保留期望值最大的一本放回书摞的顶部。

    4、清理(CLEANUP)

    输入语法为:CLEANUP [类别]。

    表示将书摞中指定类别的书全部删除,并将剩余的所有书按期望值排序,使得期望值较大的书放在上面。若指定类别的书不存在,则不执行删除操作,只进行排序。

    例如,CLEANUP LITE 表示删除书摞中的所有文学类的书,并将剩余的书排序。

    输入T个操作,请问最终书摞顶部的三本书是什么?

    输入格式:

    第一行为一个整数 TT,表示操作数量。

    接下来的 TT 行,每行输入一个操作。

    输出格式:

    自顶向下输出书摞最顶端的三本书;如果书摞中书的数量不足三本,则自顶向下输出所有书;如果书摞中没有书,输出 NULL。 在输出每本书时,应输出一行,包括:书的类别、书名和期望值,它们之间由一个空格分隔。

    样例输入:

    8
    ENLIST MATH BAYESIAN 90
    ENLIST PHIL METHODS 80
    ENLIST ECON DASKAPITAL 88
    ENLIST LITE HARRY 85
    ENLIST ART DAVINCI 95
    REMOVE BAYESIAN
    REFINE ECON
    CLEANUP LITE 
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    样例输出:

    ART DAVINCI 95
    ECON DASKAPITAL 88
    PHIL METHODS 80
    
    • 1
    • 2
    • 3

    源码传送门

    传送门:https://pan.baidu.com/s/19ik-NgRX4Hv6R-qkx8Rk9Q?pwd=1111

  • 相关阅读:
    AWS Athena SQL基础知识
    Spring Cloud Gateway集成Swagger实现微服务接口文档统一管理及登录访问
    OFDM 十六讲8 Nyquist Zero ISI Theorem
    MacOS 文件系统种类及介绍
    docker-compose部署mysql5.7主从
    Fe3+-多巴胺修饰Pluronic的多功能性水凝胶/多巴胺修饰聚丙烯微孔膜表面的研究
    aws ec2实战之挂载数据卷
    cocos creator 小游戏允许他人访问本地项目
    Flask:URL与视图的映射
    SpringBoot - 在IDEA中如何引入本地JAR包?
  • 原文地址:https://blog.csdn.net/qq_35960743/article/details/127776346