赞
踩
字母转义
输入的时候注意以十六进制。
- int data[128];
- for(int i = 0;i<n;i++){
- scanf("%x",data+i);
- }
输出的时候注意,%x默认以小写输出,%X默认是大写输出16进制。
- for(int i = 0;i<n;i++){
- scanf("%X",output+i);
- }
有一个通讯人,m个朋友圈,下面每一行都是圈里的人,用逗号分开,问最后会有几个人收到通讯人信息。
输入:
jack
3
jack,tom,anny,lucy
tom,danny
jack,lily
输出:6
- #include<iostream>
- #include<algorithm>
- #include<string>
- #include<set>
- #include<queue>
- #include<sstream>
- #include<iterator>
- using namespace std;
-
- int main() {
- string send_man;
- getline(cin, send_man);
- int num;
- cin >> num;
- cin.ignore();
- set<set<string>> t;
- for (int i = 0; i < num; i++) {
- string group;
- set<string> s;
- getline(cin, group);
- istringstream ss(group);
- while (getline(ss, group, ',')) {
- s.insert(group);
- }
- t.insert(s);
- }
- set<string> res;
- if(res.size() == 0) return 0;
- for (auto iter = t.begin(); iter != t.end(); ) {
- if (iter->find(send_man) == iter->end()) {
- iter++;
- }
- else {
- res = *iter;
- iter = t.erase(iter);
- break;
- }
- }
- while (!t.empty()) {
- bool merge = false;
- for (auto iter = t.begin(); iter != t.end();) {
- set<string> q;
- set_intersection(iter->begin(), iter->end(), res.begin(), res.end(), inserter(q, q.begin()));
- if (q.empty()) {
- iter++;
- }
- else {
- set_union(iter->begin(), iter->end(), res.begin(), res.end(), inserter(q, q.begin()));
- res = q;
- iter = t.erase(iter);
- merge = true;
- break;
- }
- }
- if (!merge) break;
- }
- cout << res.size();
- }
-

Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。