本来也不算很难的一道题,但是总是只通过60%或者80%一眼就看出思路,代码也不难的题就是不能全"/>

采购单(京东2017秋招真题)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了采购单(京东2017秋招真题)相关的知识,希望对你有一定的参考价值。

技术分享

本来也不算很难的一道题,但是总是只通过60% 或者 80%

一眼就看出思路,代码也不难的题就是不能全部通过也是神烦,应该是格式上的问题,也不算完全弄明白了,简单说说,作为一种经验。


思路:给价钱 和 每种物品的个数排序

      最贵:最高价买最多的物品,累加

      最低:最低价买最多的物品。累加


语句:list.count()    list.sort()    set(list)等


以下为正确的python语句

while 1:
    r = raw_input()
    if r != ‘‘:
        (n,m) = (int(x) for x in r.split())
        price = [int(x) for x in raw_input().split()]
        wishlist = []
        iter = 0
        while iter <m:
            want = raw_input()
            if want != ‘‘:
                wishlist += want.split()
                iter +=1
        number = [wishlist.count(x) for x in list(set(wishlist))]
        price.sort() 
        number.sort(reverse = True)
        min = [x*y for x,y in zip(price,number)]
        cost_min = sum(min)
        max = [x*y for x,y in zip(price[::-1],number)]
        cost_max = sum(max)
        print (str(cost_min) + ‘ ‘ +str(cost_max))


注意以下问题:

  1. 注意第9和11行,使用split(),如果交换,就只能通过80%了,感觉是和第10行的判断非空语句有关

  2. 写iter循环使用的是while循环,我前几遍写的时候是用for循环,一直只能通过80%,感觉还是和第10行有关,while循环是在判断非空之后添加的,而for循环是一开始就有的,可能是这里的问题吧??这一点没有搞清楚... ...

  3. 第三行要写r的非空判断,不然一直只通过60%



类似非空的语句,以前我总不写,这题遇到好多类似的麻烦,也没完全搞懂,可以考虑当个模板吧... ...


本文出自 “12242293” 博客,请务必保留此出处http://12252293.blog.51cto.com/12242293/1926031

以上是关于采购单(京东2017秋招真题)的主要内容,如果未能解决你的问题,请参考以下文章

集合(京东2017秋招真题)

进制均值(京东2017秋招真题)

集合(京东2017秋招真题)

第K个幸运数(京东2017秋招真题)

小米2017秋招真题——电话号码分身问题(Java版)

京东笔试编程题:采购单+保卫方案