算法题-排队问题

题目:
两个班的同学排队领餐,每位同学只知道跟前面同学是否在一个班,每个同学都有自己的编号,分别找出两个班的同学。输出按编号的从小到大,并且编号小的先输出;如果只有一个班的话,只输出一个班,第二行输出为空;输入非法直接返回error
例如:
输入:
1/N 2/Y 3/N 4/Y
输出:
1 2
3 4

答案:

"""
思路:从第二个同学开始,如果是N就代表跟前面不是同一班,就将count乘-1,再次遇到N再乘-1,
     这样正数为一个班,负数为一个班
"""

def Paid(s):
    s = s.split()
    s1 = []
    s2 = []
    ss = []
    count = 1
    s1.append(int(s[0].split("/")[0]))
    for i in s[1:]:
        if "N" in i:
            count *= -1
        ss.append(int(i.split("/")[0])*count)
    for j in ss:
        if j > 0:
            s1.append(j)
        else:
            s2.append(j)
    return s1, s2
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

硅油

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值