📅  最后修改于: 2023-12-03 14:58:36.422000             🧑  作者: Mango
欢迎来到门|门 IT 2008 |第 42 题。这道题目将考察你对程序设计的理解和能力。让我们一起来看看这道题目吧!
假设有一个仓库,里面有 n 个物品,分别用 1 ~ n 的编号表示。现在依次有 m 条指令,每条指令包括两种操作:
假设刚开始仓库中没有任何物品,每一次操作结束后需要输出当前仓库内物品的编号。如果仓库为空,则输出 -1。
第一行一个整数 m,表示指令的数量。
接下来 m 行,每行描述一条指令。如果操作为第一种操作,则该行包含一个整数 i;如果操作为第二种操作,则该行为空。
对于每一次操作,输出当前仓库内所有物品的编号,每个编号后跟一个空格。如果仓库为空,则输出 -1。
10
1
1
2
2
1
1
1
2
1
1 2
2
-1
1
1 2
1 1 2
2
以下是 Python 语言的代码实现:
n = int(input())
q = []
for i in range(n):
s = input().split()
if len(s) == 1:
q.append(int(s[0]))
print(' '.join(list(map(str, q))))
else:
if len(q) == 0:
print(-1)
else:
q.pop(0)
print(' '.join(list(map(str, q))) if len(q) > 0 else -1)
以上代码使用了 Python 语言,实现了指令的逐条处理。在处理操作时,我们使用了队列作为存储器,以便支持 FIFO(先进先出)的特性。如果当前操作为入队操作,则将该物品的编号加入队列,并输出当前队列中所有元素;如果当前操作为出队操作,则从队列头部取出一个元素,并输出当前队列中所有元素。在输出当前队列时,我们使用了 Python 语言的列表推导和 map 函数来方便地将所有元素转换成字符串并拼接起来。最后,如果队列为空,则输出 -1。