XJCS#16. 队伍堵塞问题

 可以分解成两个过程,一是完善过程,二是模拟队伍进出的过程

一、初始化 

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里。最后输出顺序,格式!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值