奇安信春招 C/C++服务器开发 笔试
春招 3.24 下午
20道单选
涉及c++、操作系统、计算机网络、数据库、数据结构
10道不定项选择
涉及c++、操作系统、计算机网络、数据库、数据结构
c++数组指针 、内存管理、进程通信、ipv4数据报最大报文长度、数据库范式、性能优化、二叉树遍历计算、二分类查找次数、环境变量设置命令等等
2道编程(渣渣代码能力,麻烦大佬帮忙检查一下)
写的很不精简,vs上例子都能通过,通过率没有100%,不知道那儿出了问题,帮忙找找问题!!
1.老杜参加会议。一天多场会议,输入:会议时间表[起始时间、结束时间],输出:最多能参加几场会议。
#include<iostream> #include<vector> #include<string> #include<map> #include<algorithm> #include<functional> using namespace std; void Times(vector<vector<int> >& v, int b, int& max) { // 找到最大会议次数 // 如果这一场结束比起下一场始大,跳过,满足就加 if (b == (v.size() - 1)) return; int t=0; for (int i = b, j = b; i < v.size() - 1; i++) { if (v[j][1] <= v[i + 1][0]) { t++; j++; } } max = max > t ? max : t; Times(v, b + 1, max); } int AttendMeetings(vector<vector<int> > & times) { int max = 0; Times(times, 0, max); return max; } int main() { vector<vector<int> >times = { {9,11},{10,12},{14,16},{14,15} };// {{meeting1起始时间,结束时间},{meeting2起始时间,结束时间}} cout << AttendMeetings(times); }
2.求最大资产,输入:现有资金;物品种类:m; 每种物品 限购数量 ;每种物品当前价格;每种物品十天后的价格;输出:十天后的最大资产。
想着用贪心算法
#include<iostream> #include<vector> #include<string> #include<map> #include<algorithm> #include<functional> using namespace std; int main() { //输入 :21 2 6 5 3 2 5 3 //x 现有资金 m:物品种类 mnum:每种物品 限购数量 ;prinvenow:每种物品当前价格;princeafter:每种物品十天后的价格; //输出:十天后的最大资产。 33 int x, m,res=0; cin >> x >> m; vector<int> mnum(m), prinvenow(m), princeafter(m), getp(m); map<int, int>mp; for (int i = 0; i < m; i++)cin >> mnum[i]; for (int i = 0; i < m; i++)cin >> prinvenow[i]; for (int i = 0; i < m; i++) { cin >> princeafter[i]; getp[i]= princeafter[i] - prinvenow[i]; auto it=mp.find(getp[i]); if(it==mp.end())mp[getp[i]] = i; else { mp[getp[i]] = prinvenow[it->second] < prinvenow[i] ? it->second : i; } } sort(getp.begin(), getp.end()); for (int i = m - 1; i >= 0; i--) { int k = mp[getp[i]]; int num = x / prinvenow[k]; if (num > mnum[k]) num = mnum[k]; int kk = princeafter[k] * num; x -= num*prinvenow[k]; res += kk; } cout << res; }