可以分解成两个过程,一是完善过程,二是模拟队伍进出的过程
一、初始化
ord = str(input())
process = []
lenMax = 5
for i in range(0, len(ord)):
process.append(ord[i])
people = []
这里用process复制一遍输入的指令,用来完善顺序,因为要添加0,所以用列表会很方便
为了方便输出队伍中的人,包装一个函数来输出,还是要注意格式,末尾没有空格
def out():
for i in range(0, len(people)):
print(people[i], end = '')
二、循环遍历
for i in range(0, len(ord)):
if ord[i] == '0':
if len(people) != 0:
del people[0]
out()
else:
out()
else:
if len(people) == lenMax:
process.insert(process.index(ord[i]), '0')
del people[0]
out()
if ord[i] != '0':
people.append(ord[i])
out()
else:
people.append(ord[i])
out()
如果是0,则要退出,在队不空的情况下删掉列表的第一项,即最先进入的那个人,此时要输出。如果队伍已经是空的则直接输出即可,因为会有多个0在一起的情况。
不是0时如果队伍已经满了,说明步骤少0了,便找到process中该元素的位置并加入0。寻找元素可用index函数,插入用insert函数。然后删掉第一个人退出队伍再输出。删掉后若不是0,仍然要把那个人添加进去,再输出。
除了以上的几种情况外只要加入后输出即可,不多加赘述。
三、输出结果
while (len(people) != 0):
del people[0]
process.append('0')
out()
for i in range(0, len(process)):
print(process[i], end = '')
最后要注意要把所有人都退出来即可,也要加到process里。最后输出顺序,格式!