银河出逃时 2021-08-06 23:49 采纳率: 85.7%
浏览 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 乌班图ip地址配置及远程SSH
  • ¥15 怎么让点阵屏显示静态爱心,用keiluVision5写出让点阵屏显示静态爱心的代码,越快越好
  • ¥15 PSPICE制作一个加法器
  • ¥15 javaweb项目无法正常跳转
  • ¥15 VMBox虚拟机无法访问
  • ¥15 skd显示找不到头文件
  • ¥15 机器视觉中图片中长度与真实长度的关系
  • ¥15 fastreport table 怎么只让每页的最下面和最顶部有横线
  • ¥15 java 的protected权限 ,问题在注释里
  • ¥15 这个是哪里有问题啊?