• 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

  • 相关阅读:
    【Linux】基础:Linux环境基础开发工具——yum
    uniapp生成自定义(分享)图片并保存到相册
    动态规划进阶 — — 斜率优化【3】
    找到了!宝藏公众号合集,新媒体运营小白必须学习
    c/c++常见的数据类型表示的范围
    第60节——使用redux-toolkit实战一个商品列表的增删查改
    基于ResNetRS的宝可梦图像识别
    如何选择一款好用的物业管理软件?快鲸物业管理软件是不二之选
    图论算法(2)—————拓扑排序
    Vue重新渲染组件的最佳方式是什么?
  • 原文地址:https://blog.csdn.net/qq_35960743/article/details/127776346