2016奇虎360研发工程师内推笔试编程题 - 题解
2017-10-04 14:22
274 查看
讲道理,这套题目很水,不适合练手……,但还是日常写一下报告吧,题目链接:点这里.
第一题
解析:
找一个字符串中第一次只出现一次的字母.这不瞎搞吗,直接用hash或map搞一下就可以了.代码:
#include <bits/stdc++.h> using namespace std; #define MAX_BUF 1000005 char str[MAX_BUF]; int main() { int n; for (scanf("%d", &n); n--;) { scanf("%s", str); map<char, int> mp; for (int i = 0; str[i]; i++) mp[str[i]]++; for (int i = 0; str[i]; i++) { if (mp[str[i]] == 1) { cout << str[i] << endl; break; } } } return 0; }
第二题
解析:
找镇长,要求是:所有人都认识他,他不认识所有人,还问我们可以找到几个这样的候选镇长.很无语,这明显最多只能找到一个好吧,直接开数组存下他认识多少人,被多少人认识就好了.代码:
#include <bits/stdc++.h> using namespace std; #define MAX_BUF 100005 int main() { int T; for (scanf("%d", &T); T--;) { int n, m; scanf("%d%d", &n, &m); int *in = new int[n + 1], *out = new int[n + 1]; for (int i = 0; i < n + 1; i++) in[i] = out[i] = 1; while (m--) { int x, y; scanf("%d%d", &x, &y); if (x == y) continue; in[y]++; out[x]++; } vector<int> ans; for (int i = 1; i <= n; i++) if (in[i] == n && out[i] == 1) ans.push_back(i); if (0 == ans.size()) cout << 0 << endl <<endl; else { cout << ans.size() << endl; for (int i = 0; i < (int)ans.size(); i++) cout << ans[i] << (i == (int)ans.size() - 1 ? "\n" : " "); } delete[] in; delete[] out; } return 0; }
相关文章推荐
- 2016奇虎360研发工程师内推笔试编程题第二题
- 2016奇虎360研发工程师内推笔试编程题第一题
- 2016奇虎360研发工程师内推笔试编程题:找到字符串第一个只出现一次的字符
- 最后一个字符---2016奇虎360研发工程师内推笔试编程题
- 挑选镇长-----2016奇虎360研发工程师内推笔试编程题
- 2016奇虎360研发工程师内推笔试编程题:找镇长
- 简单C++ 自测/2016奇虎360 C++研发工程师内推笔试题
- 网易2016研发工程师编程题:奖学金 [python]
- 网易2016研发工程师编程题②
- 有36辆自动赛车和6条跑道,没有计时器的前提下,最少用几次比赛可以筛选出最快的三辆赛车?----腾讯2016研发工程师在线模拟笔试题
- 华为2016研发工程师编程题
- 【京东2016研发工程师编程题】分苹果
- 钓鱼比赛(平均概率公式:1 - (1-p)^ t)----百度2016研发工程师在线编程题
- 腾讯2016研发工程师编程题微信红包
- 拜访(动态规划)----美团2016研发工程师在线编程题
- 小球的距离(每次弹起的高度为原来的一半)----京东2016研发工程师编程题(二)
- 腾讯2016研发工程师笔试题(一)----两个值得注意的选择题
- 网易2016研发工程师编程题:路灯 [python]
- 阿里巴巴2016研发工程师笔试题
- 腾讯2016研发工程师在线模拟笔试题----32位系统中,定义**a[3][4],则变量占用内存空间为()。