阿里巴巴2018届应届生在线编程测验-研发工程师C/C++

刚才去做了阿里巴巴的编程测验,好消息是抽到的题相对别的题简单一些,坏消息是编的太慢了,没有做完.

现在把题目和自己后来编出来的代码贴在这里,供大家参考.

题目:

1. 从命令行输入若干个正整数(大于等于2个),得到一个集合N。
2. 从N中任意取出两个数并求和,得到的值构成集合A。
3. 从N中任意取出两个数,并求差的绝对值,得到的值构成集合B。
4. 从集合A和集合B当中,任意取出两个数,其差的绝对值,又构成集合D
D的最小元素是d1,D的最大元素是d2,D的元素个数是s
请输出d1+d2+s

题目要求

编译器版本: gcc 4.8.4
请使用标准输入输出(stdin,stdout) ;请把所有程序写在一个文件里,勿使用已禁用图形、文件、网络、系统相关的头文件和操作,如sys/stat.h , unistd.h , curl/curl.h , process.h
时间限制: 3S (C/C++以外的语言为: 5 S) 内存限制: 128M (C/C++以外的语言为: 640 M)
输入:
n //这是输入整数的个数 x1 //第一个整数 x2 //第二个整数 ... xn //第n个整数
输出:
m //一个整数
输入范例:
5
101
102
103
104
105
输出范例:
417

题目中的代码:

 1 #include <iostream>
 2 #include <vector>
 3 #include <numeric>
 4 #include <limits>
 5 using namespace std;
 6 // 请完成下面这个函数,实现题目要求的功能
 7 // 当然,你也可以不按照这个模板来作答,完全按照自己的想法来 ^-^
 8 int result(const vector <int>& inputs) {
 9     return 0;
10 }
11
12 int main() {
13     int size = 0;
14     cin >> size;
15     cin.ignore (numeric_limits<std::streamsize>::max(), ‘\n‘);
16     vector<int> points;
17     for(size_t i=0; i<size; ++i) {
18         int item;
19         cin >> item;
20         cin.ignore (numeric_limits<std::streamsize>::max(), ‘\n‘);
21         points.push_back(item);
22     }
23     int res = result(points);
24     cout << res << endl;
25     return 0;
26 }

自己编写的区域:

 1 int result(const vector <int>& inputs) {
 2     vector<int> vecA;
 3     for (int i = 0; i < inputs.size() - 1; ++i)
 4     {
 5         for (int j = i + 1; j < inputs.size(); ++j)
 6         {
 7             vecA.push_back(inputs[i] + inputs[j]);
 8             for (int k = 0; k < vecA.size() - 1;++k)
 9             {
10                 if ((inputs[i] + inputs[j]) == vecA[k])
11                 {
12                     vecA.pop_back();
13                 }
14             }
15         }
16     }
17     vector<int> vecB;
18     for (int i = 0; i < inputs.size() - 1; ++i)
19     {
20         for (int j = i + 1; j < inputs.size(); ++j)
21         {
22             vecB.push_back((abs)(inputs[i] - inputs[j]));
23             for (int k = 0; k < vecB.size() - 1; ++k)
24             {
25                 if ((abs)(inputs[i] - inputs[j]) == vecB[k])
26                 {
27                     vecB.pop_back();
28                 }
29             }
30         }
31     }
32     vector<int> vecD;
33     for (int i = 0; i < vecA.size(); ++i)
34     {
35         for (int j = 0; j < vecB.size(); ++j)
36         {
37             vecD.push_back((abs)(vecA[i] - vecB[j]));
38             for (int k = 0; k < vecD.size() - 1; ++k)
39             {
40                 if ((abs)(vecA[i] - vecB[j]) == vecD[k])
41                 {
42                     vecD.pop_back();
43                 }
44             }
45
46         }
47     }
48     int nMax, nMin;
49     nMax = nMin = vecD[0];
50     for (int k = 0; k < vecD.size(); ++k)
51     {
52         if (vecD[k] >= nMax)
53         {
54             nMax = vecD[k];
55         }
56         if (vecD[k] <= nMin)
57         {
58             nMin = vecD[k];
59         }
60     }
61     return nMax + nMin + vecD.size();
62 }
时间: 2024-10-06 07:13:41

阿里巴巴2018届应届生在线编程测验-研发工程师C/C++的相关文章

阿里巴巴2018届应届生模拟考试题

题目 小猴子下山,沿着下山的路由一排桃树,每棵树都结了一些套子.小猴子想摘桃子,但是有一些条件需要遵守,小猴子只能沿着下山的方向走,不能回头,每棵树最多摘一个,而且一旦摘了一棵树的桃子,就不能再摘比这棵树结的桃子少的树上的桃子了,那么小猴子最多能摘几个桃子呢?举例说明,比如有5课树,分别结了10,4,5,12,8颗桃子,那么小猴子最多能摘3颗桃子,来自于结了4,5,8颗桃子的树. 这道题可以用dp来解. dp[i]表示以第i号位置的树为最后一颗树,这种情况下所能取得的最大的桃子. 1.那么dp[

2018阿里巴巴在线编程题

在其他博客上看到一道 "2018阿里巴巴在线编程题" 我记得题目大概是这样的:输入数据n(n>=6)代表n个数,从0-9任意输入n个数,然后在n个数选出6个数xx-xx-xx表示 时:分:秒,求出最小时间和最大时间,若时间无效,则输出时间无效,例如: 输入: 6 6 5 4 3 2 1 输出: 123456 235641 输入: 6 9 9 9 9 9 9 输出: 时间无效 看着有点意思,就自己做了一遍,输出格式自己美化了一下,没有严格按照题目要求.代码如下: def find_

应届生校招找工作完整流程总结

原文发表自我的个人主页,请看原文,多谢支持 http://purplesword.info/get-job 昨天有同学问我找工作方面的事,感觉有很多疑问,想想有必要把我找工作那段时间学到的东西简单做个总结,供有需要的同学参考. 在找工作之前,和很多同学一样我有很多疑问,比如什么时候找工作这种事都不了解,但是找到工作之后,又忘了当初有哪些疑问.为了让这篇写的完整一点,我特地让一位对找工作不太了解.不愿透漏姓名的.机智的学弟帮忙,把他的疑问全部说出来,然后我汇总进行一个完整的总结.尤其是很多"脑残&

应届生必看的2020互联网求职指南!

因为疫情的影响,各家公司的春招事项一再延后,2020年互联网市场会不会受疫情影响?应届生2020年怎样求职?这是很多应届生担心的话题. 下面来看看小爱的分析~ 疫情给互联网行业带来哪些机遇受疫情影响,传统经济面临重创,各线下餐饮.流水企业纷纷关闭,与此同时,互联网行业正发挥着线上平台的巨大潜力. 游戏行业流水创历史新高 <阴阳师>.<和平精英>.<玩吧>等游戏平台在春节期间因为服务器崩溃上热搜,可以见得,这次疫情导致不能出行,一部分网友选择在家手游消遣. 据王者荣耀官方

Open XML SDK 在线编程黑客松

2015年2月10日-3月20日,开源社 成员 微软开放技术,GitCafe,极客学院联合举办" Open XML SDK 在线编程黑客松 ",为专注于开发提高生产力的应用及服务的程序猿们提供一个在线动手开发,学习交流,技术分享,发挥创意与竞技的盛宴. 我们为参赛队伍准备了丰富的技术干货,国内外高手无私分享以及技术支持,逐步引导的在线学习视频教程与技术文档,场景范例,在线编程及演示环境,社区互动,丰富礼品(如极客学院特别为每位参赛人员提供月VIP码,用户可以免费学习极客学院全网课程)及

另类编辑距离-c#求解-英雄会在线编程题目

Javascript是一种基于对象(object-based)的语言,你遇到的所有东西几乎都是对象.但是,它又不是一种真正的面向对象编程(OOP)语言,因为它的语法中没有class(类). 那么,如果我们要把"属性"(property)和"方法"(method),封装成一个对象,甚至要从原型对象生成一个实例对象,我们应该怎么做呢? 一. 生成对象的原始模式 假定我们把猫看成一个对象,它有"名字"和"颜色"两个属性. var C

老程序员被裁,应届生却能月薪 1.3 万?这你能忍?

大学生期望薪资排名前三位的依次是: 北京:平均期望薪资12992元/月: 上海:平均期望薪资12070元/月: 南京:平均期望薪资9771元/月. 与应届生高期望薪资相对的是,陆续传出众多企业大裁员的消息. 这场裁员潮来的快且急,很多人措手不及:有人昨天刚通宵发布上线第二天就被裁了:有人早上还在改Bug下午就被裁了:还有公司不发工资逼着员工主动离职-... 被裁对象大多是工作一两年的.或者在公司时间较短的职场人,而这部分人又是在寒冬里找工作颇为困难的. 笔者得知即使大家在寒冬找工作困难,但期望薪

华为顶尖应届生年薪200万

最近,#华为顶尖应届生最高年薪200万# 这个话题火爆微博,截至7月25日,已有1.2亿阅读,7218讨论.一切源于7月23日,华为总裁办签发的电子邮件,邮件中表示,"华为要用顶级的挑战和薪酬去吸引顶尖人才,今年将从全世界招进20-30名天才'少年',今后逐渐增加,调整队伍作战能力结构."同时,邮件中显示,华为对8名2019届顶尖学生实行年薪制,最高两名员工的年薪为182万-201万元:两名员工的年薪为140.5万-156.5万元:最后还有四名员工的年薪为89.6万-100.8万元.

前端现在有发展前途吗?应届生好找工作吗?

「前端,有发展“钱”途」 前端发展随着互联网大时代如火如荼的进行着,Web前端技术依靠其自身在页面交互效果上强大的功能属性受到了众多企业的青睐.这不仅是在北上广,很多一二线城市都是如此. 无论是你使用的智能手机,还是iPad,还是pc电脑等等,前台的页面样式都需要前端开发工程师来编写实现,也因此市场上的移动应用Web前端岗位空缺有增无减,专业的Web前端工程师供不应求,前景广阔. 所以学好前端,是有前景可图的. 姑且不论BAT大厂校招时十几K的月薪,在广州普通的互联网公司前端程序员月薪七八千也是