采购单(京东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%

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

时间: 2024-08-02 10:59:21

采购单(京东2017秋招真题)的相关文章

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

思路:利用取余数方法可以得到转换进制之后数字表示的所有位数,本题只求和的平均值,可以不严格       考虑正排列或者逆排列 之后使用fractions的Fraction函数,方便满足需要的分数格式要求 语句:fractions的Fraction函数  Fraction(a,b)中a表示分子,b表示分母 python代码: # -*- coding: utf-8 -*- import fractions as f while 1:     number=[]     a=int(raw_inpu

集合(京东2017秋招真题)

解答思路很简单,使用Python的set函数和sort函数就可以完成,但是做完之后有时候有错误 如图 明明使用了sort但没有排序 原来是因为读入之后数字是字符串格式,所以排序的时候15 就排在了 6的前面 使用 int 调整一遍列表中元素的类型就可以了 while 1:     (x,y)=(int(x) for x in raw_input().split())     ary1=raw_input().split()     ary2=raw_input().split()     ary

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

题目 4和7是两个幸运数字,我们定义,十进制表示中,每一位只有4和7两个数的正整数都是幸运数字.前几个幸运数字为:4,7,44,47,74,77,444,447... 现在输入一个数字K,输出第K个幸运数. 输入 第一行一个数字T(T<=1000)表示测试数据的组数.对于每组测试数据,输出一个数K(1 <= K <= 100000000000000000000000000) 思路 只有四和7,而且还和顺序有关,4,7,44,47,74,77 ,不免想到二进制0,1,00,01,10,11

最短最优升级路径(完美世界2017秋招真题)

题目说明: 游戏网站提供若干升级补丁,每个补丁大小不一,玩家要升级到最新版,如何选择下载哪些补丁下载量最小. 输入 第一行输入              第一个数为用户版本  第二个数为最新版本,空格分开 接着输入N行补丁数据        第一个数补丁开始版本 第二个数为补丁结束版本 第三个数为补丁大小,空格分开 输出 对于每个测试实例,输出一个升级路径以及最后实际升级的大小 时间限制 C/C++语言:1000MS 其他语言:3000MS 样例输入 1000 1050 1000 1020 50

网易2017秋招编程题集合-牛客网

网易2017秋招编程题集合-牛客网 链接:https://www.nowcoder.com/questionTerminal/0147cbd790724bc9ae0b779aaf7c5b50来源:牛客网 如果一个数字序列逆置之后跟原序列是一样的就称这样的数字序列为回文序列.例如: {1, 2, 1}, {15, 78, 78, 15} , {112} 是回文序列, {1, 2, 2}, {15, 78, 87, 51} ,{112, 2, 11} 不是回文序列. 现在给出一个数字序列,允许使用一

网易2017秋招编程题集合_以下代码全部来自牛客网

如果一个数字序列逆置之后跟原序列是一样的就称这样的数字序列为回文序列.例如:{1, 2, 1}, {15, 78, 78, 15} , {112} 是回文序列, {1, 2, 2}, {15, 78, 87, 51} ,{112, 2, 11} 不是回文序列.现在给出一个数字序列,允许使用一种转换操作:选择任意两个相邻的数,然后从序列移除这两个数,并用这两个数字的和插入到这两个数之前的位置(只插入一个和).现在对于所给序列要求出最少需要多少次操作可以将其变成回文序列. 链接:https://ww

网易2017秋招编程题——回文序列 解题报告

Problem:https://www.nowcoder.com/question/next?pid=2811407&qid=46573&tid=6015849 如果一个数字序列逆置之后跟原序列是一样的就称这样的数字序列为回文序列.例如: {1, 2, 1}, {15, 78, 78, 15} , {112} 是回文序列, {1, 2, 2}, {15, 78, 87, 51} ,{112, 2, 11} 不是回文序列. 现在给出一个数字序列,允许使用一种转换操作: 选择任意两个相邻的数,

运维工程师笔试真题:美团点评 2017 春招真题

1.数据库索引可以明显提高哪一操作的效率?正确答案: A A SELECTB INSERT INTO - VALUES -C UPDATED DELETE 2.数据库:以下哪种锁定方式能提供最佳的并行访问性能?正确答案: D A 列锁定B 表锁定C 块锁定D 行锁定 3.从DELETE 语句中省略WHERE 子句,将产生什么结果?正确答案: B A DELETE 语句将失败因为没有记录可删除B DELETE 语句将从表中删除所有的记录C DELETE 语句将提示用户进入删除的标准D DELETE

算法是什么我记不住,But i do it my way. 解一道滴滴出行秋招编程题。

只因在今日头条刷到一篇文章,我就这样伤害我自己,手贱. 刷头条看到一篇文章写的滴滴出行2017秋招编程题,后来发现原文在这里http://www.cnblogs.com/SHERO-Vae/p/5882357.html.看了下,挺有意思,于是就想了想,又写了写,最终撸出来了.刚开始一看顿时感觉很熟悉,大学数据结构和算法课肯定讲过相关东西,什么深度搜索,广度搜索,最优路径,最优解...但是现在你让我说个一二三,我还就只记住几个名字,说不定名字都记错.我向来不喜欢死记东西,能查到的真的不想背下来,而