2017京东在线笔试编程题之 买东西
2016-09-05 22:07
603 查看
晚上做了京东的笔试
编程题在占了不起眼的30分,前面的多选加单选混合糅杂了各种语言各种系统软件开发的各个流程 我的天啊 我就是想好好的做个java笔试题 你给我整C#的题是要闹哪样。
闲言少叙 书归正传
两道题 一道是买东西 一道是爬山 。
题目一
大意是小B喜欢买东西到了商店之后发现店员还没有把价签贴到货架上,但是又等不及要买 ,因此想先把东西放在购物篮,拿到店员处根据价签算价。现在有价格表和购物表,你能帮ta预估一下最好的情况和最坏的情况下需要多少钱吗?
(这场景也是够BT的,谁想出来这么。。完全不知道怎么形容的。故事情节)
输入第一行是 n m ,n代表店里有多少个商品,m 代表购物栏有多少商品
输入第二行是 n个用空格隔开的整数代表不同商品的价格 (可重复)
接下来是m行商品名 用字符串表示
要求输出最小总价和最大总价
输出示例
6 3
1 2 5 3 6 8
banana
banana
apple
则最小价格应该是4,最大价格是22
输出示例
4 22
菜鸟只是把第一道看了就开始写代码
大概思路就是先读入数据,然后将价格排序
用map 存储商品名 并进行计数,按照数量进行排序
最后用两个数组相乘 则可得到最小值和最大值。
PS:读入第一行用nextInt()的时候要注意后面接一个nextLine()处理一下第一行末尾的\n要不然就会出现错误,啊啊啊啊啊啊不堪回首
结果很可惜 再给我两分钟我就能把这个代码调通了。错误的两处一个是上面的nextLine()没用。一个是遍历map时int j放在循环里了。
话说当时真是代码撸的飞快。还是差一点差一点啊。
编程题在占了不起眼的30分,前面的多选加单选混合糅杂了各种语言各种系统软件开发的各个流程 我的天啊 我就是想好好的做个java笔试题 你给我整C#的题是要闹哪样。
闲言少叙 书归正传
两道题 一道是买东西 一道是爬山 。
题目一
大意是小B喜欢买东西到了商店之后发现店员还没有把价签贴到货架上,但是又等不及要买 ,因此想先把东西放在购物篮,拿到店员处根据价签算价。现在有价格表和购物表,你能帮ta预估一下最好的情况和最坏的情况下需要多少钱吗?
(这场景也是够BT的,谁想出来这么。。完全不知道怎么形容的。故事情节)
输入第一行是 n m ,n代表店里有多少个商品,m 代表购物栏有多少商品
输入第二行是 n个用空格隔开的整数代表不同商品的价格 (可重复)
接下来是m行商品名 用字符串表示
要求输出最小总价和最大总价
输出示例
6 3
1 2 5 3 6 8
banana
banana
apple
则最小价格应该是4,最大价格是22
输出示例
4 22
菜鸟只是把第一道看了就开始写代码
大概思路就是先读入数据,然后将价格排序
用map 存储商品名 并进行计数,按照数量进行排序
最后用两个数组相乘 则可得到最小值和最大值。
PS:读入第一行用nextInt()的时候要注意后面接一个nextLine()处理一下第一行末尾的\n要不然就会出现错误,啊啊啊啊啊啊不堪回首
结果很可惜 再给我两分钟我就能把这个代码调通了。错误的两处一个是上面的nextLine()没用。一个是遍历map时int j放在循环里了。
话说当时真是代码撸的飞快。还是差一点差一点啊。
import java.util.*; public class shopping { public static void main(String[] args) { Scanner in = new Scanner(System.in); int n = in.nextInt(); int m = in.nextInt(); in.nextLine(); String[] price= in.nextLine().split(" "); //price list int [] pri = new int ; for(int i=0;i<price.length;i++){ pri[i]= Integer.valueOf(price[i]); } //count Map<String,Integer> map = new HashMap<String,Integer>(); for(int i=0;i<m;i++){ String item= in.nextLine(); if(map.containsKey(item)){ int val = map.get(item)+1; map.put(item, val); }else{ map.put(item,1); } } in.close(); //traverse int [] itemset = new int[m]; int j=0; for(Object o:map.keySet()){ int value=map.get(o); itemset[j]=value; j++; } //calculate insertion(itemset); insertion(pri); //max int min =0; for(int k=0;k<m;k++){ min+=pri[k]*itemset[m-k-1]; } int max = 0; for(int k=0;k<m;k++){ max+=pri[n-1-k]*itemset[m-k-1]; } System.out.println(min+" "+max); } //sort public static void insertion(int[] a){ for(int i=0;i<a.length-1;i++){ for(int j=i+1;j>0;j--){ if( a[j-1]<=a[j]) break; int tmp = a[j-1]; ````` a[j-1] = a[j]; a[j] = tmp; } } } }
相关文章推荐
- 京东2017实习生招聘在线笔试编程题
- 京东2017实习生招聘在线笔试编程题题解
- 京东2017实习生招聘在线笔试编程题
- 采购单-京东2017在线笔试编程题C++
- 京东2017实习生招聘——在线笔试编程题总结
- 幸运数-京东2017在线笔试编程题
- 阿里笔试题(2017在线编程题)-- 数串分组
- 2017京东校招笔试编程题--python
- 京东2017实习生笔试编程题-终结者C
- 2017京东笔试编程题-保卫方案 | Codeforces Beta Round #5 E.Bindian Signalizing
- 京东2017校招笔试编程题2:进制转换、辗转相除法
- 2016京东在线笔试(编程题之一)
- (京东在线笔试编程题)关于证券委托的一道题
- 京东2018校招在线笔试编程题①
- 京东2015在线笔试编程题--分苹果Java实现
- 2017网易实习数据挖掘工程师笔试在线编程题《分饼干》
- 京东2015在线笔试----编程题--分苹果
- 京东2015在线笔试----编程题--分苹果
- 2017网易游戏·在线笔试编程题·第一题
- 去哪儿网2017校招在线笔试(前端工程师)编程题及JavaScript代码