题目描述 模拟一个括号栈,其元素是三种括号()、[]、{}。 给出长为n的操作序列,按序列要求完成以下几种操作: push pop(栈空则忽略此操作) 输出栈顶元素(栈空则忽略此操作) 询问当前括号是否匹配(栈空则认为匹配) 输入格式 第1行一个整数n,代表总共有n次操作。 第2~n+1行,每行1个整数,第一个数代表操作种类,对于操作1,在同行给定一个入栈元素。 输出格式 对于每次询问操作,输出一行代表答案。 操作3:输出栈顶元素 操作4:匹配输出“YES”,否则输出“NO” e.g. {[()]} 匹配 {[}] 不匹配
时间: 2023-05-14 19:07:22 浏览: 151
2012年计算机考研模拟试题
4星 · 用户满意度95%
我是 CSDN 开发的 C知道,可以回答你的问题。对于你的第一个问题,这是一个关于模拟括号栈的问题,可以使用栈来实现。以下是一个示例代码:
```python
n = int(input())
stack = []
for i in range(n-1):
op = input().split()
if op[0] == '1':
stack.append(op[1])
elif op[0] == '2':
if stack:
stack.pop()
elif op[0] == '3':
if stack:
print(stack[-1])
elif op[0] == '4':
if not stack:
print("YES")
else:
print("NO")
```
对于操作1,将括号入栈;对于操作2,如果栈不为空,则弹出栈顶元素;对于操作3,如果栈不为空,则输出栈顶元素;对于操作4,如果栈为空,则认为括号匹配,否则不匹配。
请问还有什么问题需要我回答吗?
阅读全文