【网易、大疆2019校招软件类】笔试题以及部分思路
感觉今年校招题还是有一定难度,自己还是太菜了,大家有好的思路也可以分享。
网易笔试(8.3 15:00-17:00)
1.超大数和一个长整型的最大公约数。
第一题的思路比较简单,就是辗转相除法,用字符串存储大数,然后分段辗转相除
辗转相除法:
假如有两个正整数p1,p2,其中p1>p2,那么必然存在两个自然数k,b,使得p1=k*p2。如果p1,p2的最大公约数是p3,那么p2,b的最大公约数也是p3。例如gcb(55,30)=gcb(25,30)=gcb(25,5)
2.一个数组中长度从1到n的子序列中最大值的最小值。
3.一个数组中,奇偶数可互换,求任意次互换后字典序最小的数组序列。
个人思路:没有特别好的想法
4.给定一个长度M(<=100000)的数组,然后输入N(<=100000)个整数,每次将数组中所有大于等于该整数的元素减一,并输出改变了多少个元素,要求时间性能小于1s。个人思路:用二分查找结果70%结果都TLE了,经过分析认为主要是遍历数组进行减一的操作太费时间(O(n^2)的复杂度)后来考虑用一个数组储存更新过的下标分界位置来绕过遍历减一的环节,然而没写完。
大疆笔试 (8.6 19:00-21:00)
1. 给定暑假时间X天(<=1000),游戏数量N个(<=11),接下来N行给定每种游戏需要花费的天数(Ai),以及通关该游戏带来的成就点数(Bi),求:在暑假X天里能够达成的最高成就点数。
PS.这题我特么写成完全背包了,其实是01背包,结果只对50%。
2. 输入指令集长度M和指令操作长度N 接下来输入M个指令(字符串)=》指令值(字符串)的映射关系 然后随机输入N个指令,要求输出对应指令值。
个人思路:最简单的用c++ map容器,然而忘记map写法,耽误大量时间,超级遗憾。
#include <iostream> #include <string> #include <map> using namespace std; int main() { map<string, string> ops; int x, y; cin >> x >> y; for (int i = 0; i < x; i++) { string a, b; cin >> a >> b; ops[a] = b; } for (int i = 0; i < y; i++) { string op; cin >> op; cout << ops[op] << endl; } }3. 给定N块钱,M种水果,每种水果价格Pi,其中有X种特别喜欢的水果,给定不同水果喜欢程度的排序,并要求排序靠前的水果购买量不得小于靠后的,求所有把钱花光的可能性,结果对10000007取模。
个人思路:跪了...
#笔试题目##网易##大疆##题解#