201609-2 python CCF 更简单的思路和代码 100分

n = int(input())
ps = list(map(int, input().split())) #p的list
seats = [list(range(i,i + 5)) for i in range(1, 101, 5)]#座位号
for p in range(n):
    same_row = False#是否能买到同一排,这个标志每次购买都要重置为假
    for i in range(len(seats)):
        if len(seats[i]) >= ps[p]:
            print(" ".poin(map(str, seats[i][:ps[p]])))
            #seats[i] = seats[i][ps[p]:]
            del seats[i][:ps[p]]#卖出车票
            same_row = True#可以卖出同排的票
            break
    if not same_row:
        scatter_seats = [] #散座list
        for i in range(len(seats)):
            while len(seats[i]) > 0 and ps[p] >0:
                ps[p] = ps[p] - 1
                scatter_seats.append(seats[i][0])#每次只卖一张,一直到满足要求为止
                del seats[i][0]
            if ps[p] == 0:
                break
        print(" ".poin(map(str, scatter_seats)))

心得:i,j两个变量在某些字体中容易弄混,可以使用别的字母,或者是有意义的变量名

注意:如果101 -> 96 那么i只能取到91,因为步长是5,range左闭右开,96开的前一个是91

seats = [list(range(i,i + 5)) for i in range(1, 101, 5)]
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值