當前位置:
首頁 > 知識 > 阿里巴巴2018屆應屆生在線編程測驗-研發工程師C/C++

阿里巴巴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
2 #include
3 #include
4 #include 5 using namespace std;
6 // 請完成下面這個函數,實現題目要求的功能
7 // 當然,你也可以不按照這個模板來作答,完全按照自己的想法來 ^-^
8 int result(const vector & inputs) {
9 return 0;
10 }
11
12 int main {
13 int size = 0;
14 cin >> size;
15 cin.ignore (numeric_limits::max, "
");
16 vector points;
17 for(size_t i=0; i> item;
20 cin.ignore (numeric_limits::max, "
");
21 points.push_back(item);
22 }
23 int res = result(points);
24 cout << res << endl; 25 return 0; 26 }

自己編寫的區域:

1 int result(const vector & inputs) {
2 vector 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 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 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 }

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 科技優家 的精彩文章:

Redis 錯誤1067:進程意外終止,Redis不能啟動,Redis啟動不了
ASP.NET Core MVC 過濾器介紹
Windows Redis默認配置文件,Redis配置不生效解決方案
用 volume container 共享數據

TAG:科技優家 |

您可能感興趣

809系列編程器在線刷寫IT8585 EC 晶元教程
S7-200SMART 編程技巧及經驗
班碼編程宣布完成5000萬Pre-A輪融資
UG NX8.5編程
UG NX8.5編程教程
2019 年軟體開發人員必學的編程語言 Top 3
2018最流行的編程語言Top 3
奧創熊:4-6人小班直播教學,為7-15歲兒童提供在線編程教育
Python奪冠:2018年頂級編程語言
2018最後一戰:25天編程PK賽!
從 C++98 到 C++17,元編程是如何演進的?|技術頭條
2018年8月全球編程語言排行榜
11套UG NX8.5編程實例視頻教程原價467元,先僅售36元!
2018年3月份編程語言排行榜
11套UG NX8.5編程實例視頻教程原價467元,先僅售35元!
艾瑞諮詢:2018年中國少兒編程行業研究報告
5K彩漫鼠宏編程 血手幽靈 J-95售189元
2018年ACM世界編程大賽,前兩名又被俄羅斯霸榜了
2019年5月編程語言排行榜:R跌出前20,Python成最大贏家
2018年Q1 編程語言排名:JS 第一,Swift 首進前十