问题描述
有n个人正在饭堂排队买海北鸡饭。每份海北鸡饭要25元。奇怪的是,每个人手里只有一张钞票(每张钞票的面值为25、50、100元),而且饭堂阿姨一开始没有任何零钱。请问饭堂阿姨能否给所有人找零(假设饭堂阿姨足够聪明)
输入格式
第一行一个整数n,表示排队的人数。
接下来n个整数a[1],a[2],…,a[n]。a[i]表示第i位学生手里钞票的价值(i越小,在队伍里越靠前)
输出格式
输出YES或者NO
样例输入
4
25 25 50 50
样例输出
YES
样例输入
2
25 100
样例输出
NO
样例输入
4
25 25 50 100
样例输出
YES
数据规模和约定
n不超过1000000
n=eval(input())
s=list(map(eval,input().split()))
def check1(mon,num):
x=sum(mon)
mon.sort()
if x<num:
return False
if num==25:
if mon[0]==25:
mon[0]=50
return True
else:
return False
if num==75:
if mon[0]!=25:
return False
else:
if mon.count(50)!=0:
mon.remove(25)
mon.remove(50)
mon.append(100)
return True
elif mon.count(25)>=3:
mon.remove(25)
mon.remove(25)
mon.remove(25)
mon.append(100)
return True
else:
return False
money=[]
flag=True
for i in range(n):
if s[i]==25:
money.append(25)
elif s[i]==50:
if check1(money,25)!=True:
flag = False
break
else:
if check1(money,75)!=True:
flag = False
break
#print(money)
if(flag):
print("YES")
else:
print("NO")
首先先判断第一个学生是不是给了25
check1(mon,num)函数的作用
mon是阿姨手中的钱 是一个列表
num 是应该找的钱
分析了三种情况 50找25、 75找50、 100找75
用函数直接判断阿姨手里零钱能不能找开