银河出逃时 2021-08-06 23:49 采纳率: 88.2%
浏览 55
已结题

一道Python题请看1下哪有问题

电影院售票处有很多人排着长队。他们每个人都有一个单一的100,50还是25美元的钞票。
一张电影票25 dollars。
Vasya想把票卖给这条线的每一个人。
如果 Vasya 最初没有钱并严格按照人们排队的顺序出售门票,他能否向每个人出售一张票并找零?
如果瓦夏能把一张票卖给每个人,返回YES,并用他当时手头的钞票找零。否则返回NO。

自己写的代码有些实例带进去对,这两个带进去不对,估计逻辑还是有一些问题请帮我在此基础上改一下

def tickets(people):
    c = []
    ch = 0
    for i in people:
        if i == 25:
            c.append(i)
            ch = sum(c)
        if i>25:
            ch -= (i-25)
            if ch >= 0:
                c.append(25)
    if ch >= 0:
        return "YES"
    else:
        return "NO"

print(tickets([25, 25, 50, 100]))#"YES"
print(tickets([25, 50, 25, 50, 100, 25, 25, 50]))#"NO"

  • 写回答

2条回答 默认 最新

  • 八云黧 2021-08-07 10:29
    关注

    思路有问题,不能直接用手里钱的总和来计算。
    比如你手里只剩两张50,ch为100,再来个50,你总和上算能找开,但你根本没零钱。
    改了一下代码

    def tickets(people):
        dict = {25:0,50:0,100:0}
        for i in people:
            if i == 25:
                dict[25] += 1
            elif i == 50:
                if (dict[25] == 0):
                    return "NO"
                else:
                    dict[25]-=1
                    dict[50]+=1
            else:
                # 一个很简单的逻辑,当你手里有50元时,只能用来给100找零,所以应该优先50+25
                if (dict[25]>0 and dict[50]>0):
                    dict[25]-=1
                    dict[50]-=1
                    # 其实100可以不要,因为100无法被用于找零,这里主要是为了能够显示手里最终有什么样的组合才使用的
                    dict[100]+=1
                elif (dict[25]>=3):
                    dict[25]-=3
                    dict[100]+=1
                else:
                    return "NO"
        return "YES"
    print(tickets([25, 25, 50, 100]))#"YES"
    print(tickets([25, 50, 25, 50, 100, 25, 25, 50]))#"NO"
     
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 8月15日
  • 已采纳回答 8月7日
  • 创建了问题 8月6日

悬赏问题

  • ¥15 对于这个复杂问题的解释说明
  • ¥50 三种调度算法报错 采用的你的方案
  • ¥15 关于#python#的问题,请各位专家解答!
  • ¥200 询问:python实现大地主题正反算的程序设计,有偿
  • ¥15 smptlib使用465端口发送邮件失败
  • ¥200 总是报错,能帮助用python实现程序实现高斯正反算吗?有偿
  • ¥15 对于squad数据集的基于bert模型的微调
  • ¥15 为什么我运行这个网络会出现以下报错?CRNN神经网络
  • ¥20 steam下载游戏占用内存
  • ¥15 CST保存项目时失败