zoukankan      html  css  js  c++  java
  • 5_5 集合栈计算机(UVa12096)<stack与STL其他容器的综合运用>

    有一个专门为了集合运算而设计的“集合栈”计算机。该机器有一个初始化为空的栈,并支持以下操作:( 维护 N(1≤N≤2000) 个操作, 可能的五种操作如下:)

    ■PUSH: 在栈顶加入一个空集合 A={} ;
    ■DUP: 把栈顶集合 A 复制一遍再加进去;
    ■UNION: 弹出栈顶集合 A 及其下集合 B , 把它们的并集加入栈;
    ■INTERSECT: 弹出栈顶集合 A 及其下集合 B , 把他们的交集加入栈;
    ■ADD: 弹出栈顶集合 A 及其下集合 B , 把栈顶集合 A 作为一个元素加入集合 B , 再把集合 B 加入栈中.

    对于每个操作, 输出栈顶集合 A 中的元素个数.

    例如:栈顶元素是:A = {{},{{}}},下一个元素是B = {{},{{{}}}},则:

    ■UNION操作将得到 {{}, {{}}, {{{}}}},输出3.

    ■INTERSECT操作将得到{{}},输出1.

    ■ADD操作将得到{{}, {{{}}}, {{},{{}}}},输出3.

    输入不超过2000个操作数,并保证操作均能顺利进行(不需要对空栈执行出栈操作)。

    【输入】

    一个整数0≤T≤5在第一行给出的测试用例集的基数。每个测试案例的第一行包含0≤N≤操作数2000。然后每一个包含五个命令中的每一个。这是保证setstack计算机可以执行所有的命令序列中没有出现一个空栈。

    【输出】

    对于输入中所指定的每个操作,将有一个由一个整数组成的一行。
    这个整数是经过相应的命令执行的堆栈顶端的元素的个数。在每个测试用例都会有一行“***”(三个)。

    【样例输入】

    2
    9
    PUSH
    DUP
    ADD
    PUSH
    ADD
    DUP
    ADD
    DUP
    UNION
    5
    PUSH
    PUSH
    ADD
    PUSH
    INTERSECT

    【样例输出】

    0
    0
    1
    0
    1
    1
    2
    2
    2
    ***
    0
    0
    1
    0
    0
    ***

  • 相关阅读:
    串口RS232和485通信的波形分析
    Ubuntu添加中文输入法
    虚拟机桥接模式联网方法,Xshell的连接与使用
    waitpid 函数详解
    linux for循环 fork() 产生子进程
    【LeetCode解题总结】动态规划篇
    【LeetCode解题总结】递归篇
    【LeetCode解题总结】排序篇
    【LeetCode解题总结】树/图篇
    【LeetCode解题总结】栈/队列篇
  • 原文地址:https://www.cnblogs.com/jjzzx/p/5381638.html
Copyright © 2011-2022 走看看