JD 2016年实习生笔试题
来源:互联网 发布:linux客户端是什么意思 编辑:程序博客网 时间:2024/06/03 01:32
第一次做公司的笔试题,各种不适应。写出程序也只有一个错误的表示,又不能调试,又不知道错误在哪,整个过程很纠结,感觉题目不难,但是限定时间调出来还是不容易,太渣了,后来记录整理下,记在这。第一题:小明想找班级分数最高的同学:输入学生的人数,再输入每位学生的分数和姓名,求最高分的学生姓名。输入:第一行输入正整数N,表示学生人数,接着输入N行,每行格式为:分数 姓名分数为非负整数,且小于等于100,;姓名为连续字符串,中间没有空格,长度不超过20数据保证有最高分的同学输出:最高分同学姓名。
这一题应该比较简单,但是当时我对cin不熟,平时都是直接写死的数据,并没有cin,然后当时想自己每次getline一行,又不记得它用法,又用了字符串流,自己把自己整复杂了。很坑的是每次答案错误只显示答案错误,什么提示信息都没有。哎。。。
以下是我写的代码,代码如下:
#include <iostream>#include <string>#include <algorithm>using namespace std;int main(){ int N; cin>>N; int i=0; int array[N]; string str[N]; int score; while(i<N) { cin>>score; if(score>=0&&score<=100) { array[i]=score; cin>>str[i]; i++; } else { cout<<"score must between 0 and 100!,Enter again!"<<endl; } } int temp=0,maxscore=0; for(i=0;i<N;i++) { if(array[i]>maxscore) { maxscore=array[i]; temp=i; } } cout<<str[temp]<<endl;}
第二题:
给一个有数字字符’0’..’9’构成的字符串,写出它的p型编码串;
如122344111可写为一个1,2个2 1个32个4 3个1,即1122132431;
输入一行字符串,输出字符串对应的p型编码串。
这一题我被stringstream流给坑死了,
每次在重复使用同一个stringstream流时,下次使用要先清空它的缓存区,要不然所得到的数永远是之前那个。什么意思:
一般说来,人们对于清空流缓存区,想到的都是clear()函数,但是stringstream中clear()函数并不清空流的缓存区,只是重置了流的标志而已,如那种标志错误的标志类似的。在stringstream中调用.str(“”)清空流标志。
但是我自己在程序中测试(后面可以看到),我调用。str(“”)清流反而不行,我调用clear()还行。
在网上找到的解释:
那么把stringstream类内部的缓冲区正确的清空方式是什么呢?
stringstream ss;
答案是: ss.str(“”) 方法.
另外,如果需要把格式化后的字符串通过>>输出到字符串, 必须每次都调用clear()方法!
所以保险起见,以后清空流两个方法都用。
看代码:
#include <sstream>#include <stdio.h>using namespace std;int main(){ stringstream ss; string result; int n=1; ss.clear(); ss<<n; ss>>result; printf("result : %s, str : %s\n", result.c_str(), ss.str().c_str()); n=2; ss.clear(); ss<<n; ss>>result; printf("result : %s, str : %s\n", result.c_str(), ss.str().c_str()); n=3; ss.str(""); ss<<n; ss>>result; printf("result : %s, str : %s\n", result.c_str(), ss.str().c_str()); n=4; ss.clear(); ss.str(""); ss<<n; ss>>result; printf("result : %s, str : %s\n", result.c_str(), ss.str().c_str());}
测试结果:
result : 1, str : 1
result : 2, str : 12 // 调用了clear(), 没有调用str(“”), 结果错误.
result : 2, str : // 调用了 str(“”), 没有调用clear(), 结果错误.
result : 4, str : 4 // 调用了 clear()和str(“”), 结果正确.
回到正题,先说说我对第二题的代码:
#include <iostream>#include <string>#include <sstream>using namespace std;int main(){ string str; string pstr=""; stringstream iss; cin>>str; int i,j; string tempstr=""; for(i=0,j=0;i<str.size();) { iss.str(""); iss.clear(); while(j<str.size()&&str[i]==str[j]) { j++; } iss<<(j-i); iss>>tempstr; pstr+=tempstr; pstr+=str[i]; i=j; } cout<<pstr<<endl;}
也说了,中间就流的具体没弄清,导致程序错误,上述已经编译通过。
第三题:
给定一个含n个整数的数组,找出其中出现次数超过一半的数(数组中的数均大于-50小于50)
输入:
第一行一个整数n,表示数组大小
第二行输入n个数组元素
输出:
如果存在这样的数,输出;否则;输出0;
一看到这个题目,还是觉得比较简单的。因为它限定了数组中数的大小,所以定义一个数组
代码如下:
#include <iostream>using namespace std;int main(){ int n; cin>>n; int array[100]={0}; int i=0; int num; while(i<n&&cin>>num) {// cin>>num; array[num+50]++; i++; } for(i=0;i<100;i++) { if(array[i]>n/2) { cout<<i-50<<endl; return 0; } } cout<<"no"<<endl;}
哎,这题说多了都是泪,开始写的时候因为return 0没写,实际中找到的话也会输出no,但是在线编辑的时候又显示不了运行结果,只显示错误,好坑。
第四题:
小明想给n个瓶子涂亚瑟,相邻的瓶子颜色不一样,总共有三种颜色,分别为红,绿和蓝,由于瓶子大小,材质不同,不同瓶子涂不同颜色花费不一样,统计一下,把第i个瓶子涂红要Ri元,染绿要Gi元,染蓝药Bi元,现为了使相邻瓶子颜色不同,问 最少花费;
输入:
第一行:n 代表n个瓶子
第二行:n个整数,分别代表将第i个瓶子染红要Ri元
第三行:n个整数,分别代表将第i个瓶子染绿要Gi元
第四行:n个整数,分别代表将第i个瓶子染蓝要Bi元
输出:
最小花费
本题我考虑的可能是贪心算法吧,具体叫啥我也不知道。我的思路是:
考虑第n个瓶子,当它涂红时,在此情况下,要使它花费最少,那么第n-1个瓶子要么是绿,要么是蓝,选择其中的较小的,假如是绿,那如果第n-1个瓶子是绿的,且花费最小,那么就能保证当最后一个瓶子是红的,所有n个瓶子花费最少。当第n个是绿的或者蓝的同理。感觉说的不清楚,上代码吧,一看就知道了。
#include <iostream>#include <algorithm>using namespace std;int main(){ int n; cin>>n; int red[n],green[n],blue[n]; int i; for(i=0;i<n;i++) { cin>>red[i]; } for(i=0;i<n;i++) { cin>>green[i]; } for(i=0;i<n;i++) { cin>>blue[i]; } int sum[n][3]; sum[0][0]=red[0]; sum[0][1]=green[0]; sum[0][2]=blue[0]; for(i=1;i<n;i++) { sum[i][0]=min(sum[i-1][1],sum[i-1][2])+red[i]; sum[i][1]=min(sum[i-1][0],sum[i-1][2])+green[i]; sum[i][2]=min(sum[i-1][1],sum[i-1][0])+blue[i]; } cout<<min(min(sum[n-1][0],sum[n-1][1]),sum[n-1][2])<<endl;}
小结:有限的时间写程序并调成功真的好难啊,而且就是只能在网页上自己用眼睛看的调,不能gdb或者用vs,真是。。。。心好累。。。
- JD 2016年实习生笔试题
- 腾讯2016年实习生招聘笔试题
- sohu2012年实习生笔试题
- 网易2016年实习生笔试题-二叉树
- JD笔试
- 2016腾讯实习生在线笔试题
- 2016网易暑期实习生笔试题
- 京东2016笔实习生在线笔试题
- 2016阿里安全工程师实习生招聘笔试题
- 携程2016实习生招聘笔试题
- 2012年腾讯招聘实习生笔试题
- 2012年腾讯招聘实习生笔试题
- 2012年百度实习生笔试题
- 腾讯2012年实习生笔试加分题
- 腾讯2012年实习生笔试加分题
- 阿里巴巴2013年实习生笔试题
- 2013年阿里巴巴实习生招聘笔试题
- 腾讯2012年实习生笔试加分题 .
- Notification Once
- iOS 8 Auto Layout界面自动布局系列5-自身内容尺寸约束、修改约束、布局动画
- 字符串转成实数-atof
- ACM--百分比求值--HDOJ 1701--ACMer--水
- 序列和索引
- JD 2016年实习生笔试题
- 训练3 习题11
- CAN总线发送与接收函数
- GC基本概念
- 架构漫谈(三):如何做好架构之识别问题
- java 二进制和十六进制的互转
- java中16位或32位MD5加密
- popupwindow实现类似ActionBar右侧更多效果
- POJ3630 静态建立trie