阿里笔试编程题第二题(优惠券使用)

Python代码:
mylist=[]
try:
    while True:
        i=[int(x) for x in raw_input().split()]
        mylist.append(i)
        if i == "":
            break
except:
    pass
num=mylist[1]
m=mylist[0][0]
def func(m,num):
    if sum(num)<2*m:
        return -1
    else:
        M=[]
        for i in range(len(num)):
            if sum(num[:i]+num[i+1:])>=2*m:
                M.append(num[i])
        if len(M)==0:
            return sum(num)
        else:
            num.remove(max(M))
            return func(m,num)
print '%.1f'%func(m,num)


#阿里巴巴##笔试题目##题解#
全部评论
修改后方便本地调试的Python3代码: m=int(input()) num=[int(x) for x in input().split()] def func(m,num):     if sum(num)<2*m:         return -1     else:         M=[]         for i in range(len(num)):             if sum(num[:i]+num[i+1:])>=2*m and len(num[:i]+num[i+1:])>2:                 M.append(num[i])             else:                 a=num[:i]+num[i+1:]                 if sum(num[:i]+num[i+1:])>=2*m and a[0]>=300 and a[1]>=300:                     M.append(num[i])         if len(M)==0:             return sum(num)         else:             num.remove(max(M))             return func(m,num) print('%.1f'%func(m,num))
点赞 回复 分享
发布于 2019-09-05 11:54
楼主你好,如何保证大于2*m的最小值,商品可以分成都不小于300的两拨呢? 比如,输入是200,299,303. 这段代码也是输出602.0,但其实并不能用得了这两张优惠券。
点赞 回复 分享
发布于 2019-09-04 17:30

相关推荐

06-26 17:24
已编辑
宁波大学 Java
一口洪烧肉:哈哈哈哈哈哈哈哈哈哈哈硬要啊
点赞 评论 收藏
分享
05-16 11:16
已编辑
东华理工大学 Java
牛客73769814...:盲猜几十人小公司,庙小妖风大,咋不叫她去4️⃣呢😁
牛客创作赏金赛
点赞 评论 收藏
分享
评论
点赞
3
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务