当前位置:   article > 正文

华为2019.8.22笔试题_华为赛题-20190921-22

华为赛题-20190921-22

字母转义

输入的时候注意以十六进制。

  1. int data[128];
  2. for(int i = 0;i<n;i++){
  3. scanf("%x",data+i);
  4. }

输出的时候注意,%x默认以小写输出,%X默认是大写输出16进制。

  1. for(int i = 0;i<n;i++){
  2. scanf("%X",output+i);
  3. }

有一个通讯人,m个朋友圈,下面每一行都是圈里的人,用逗号分开,问最后会有几个人收到通讯人信息。

输入:

jack

3

jack,tom,anny,lucy

tom,danny

jack,lily

输出:6 

  1. #include<iostream>
  2. #include<algorithm>
  3. #include<string>
  4. #include<set>
  5. #include<queue>
  6. #include<sstream>
  7. #include<iterator>
  8. using namespace std;
  9. int main() {
  10. string send_man;
  11. getline(cin, send_man);
  12. int num;
  13. cin >> num;
  14. cin.ignore();
  15. set<set<string>> t;
  16. for (int i = 0; i < num; i++) {
  17. string group;
  18. set<string> s;
  19. getline(cin, group);
  20. istringstream ss(group);
  21. while (getline(ss, group, ',')) {
  22. s.insert(group);
  23. }
  24. t.insert(s);
  25. }
  26. set<string> res;
  27. if(res.size() == 0) return 0;
  28. for (auto iter = t.begin(); iter != t.end(); ) {
  29. if (iter->find(send_man) == iter->end()) {
  30. iter++;
  31. }
  32. else {
  33. res = *iter;
  34. iter = t.erase(iter);
  35. break;
  36. }
  37. }
  38. while (!t.empty()) {
  39. bool merge = false;
  40. for (auto iter = t.begin(); iter != t.end();) {
  41. set<string> q;
  42. set_intersection(iter->begin(), iter->end(), res.begin(), res.end(), inserter(q, q.begin()));
  43. if (q.empty()) {
  44. iter++;
  45. }
  46. else {
  47. set_union(iter->begin(), iter->end(), res.begin(), res.end(), inserter(q, q.begin()));
  48. res = q;
  49. iter = t.erase(iter);
  50. merge = true;
  51. break;
  52. }
  53. }
  54. if (!merge) break;
  55. }
  56. cout << res.size();
  57. }

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/盐析白兔/article/detail/904890
推荐阅读
相关标签
  

闽ICP备14008679号