题目详情 - 7-10 电话聊天狂人 (pintia.cn)
// 卡壳5分钟,因为没有break,导致满足条件的情况全部被输出。
没有明确套路的概念与细节
关键词:有多个XX时,选择序列最小的(或最大的)
for(int i = 0;i < n;i++){ if(){ break; } }
正确代码
#include <iostream> // 给定大量手机用户通话记录,找出其中通话次数最多的聊天狂人。,统计次数 主干 // 在一行中给出聊天狂人的手机号码及其通话次数,附加要求1 map // 如果这样的人不唯一,则输出狂人中最小的号码及其通话次数,并且附加给出并列狂人的人数。附加要求2 map #include <algorithm> #include <cstdio> #include <cstring> #include <map> using namespace std;map <string,int>m; int main(){ int n; int maxn = 0; cin >> n; for(int i = 0;i < n;i++){ string s1,s2; cin >> s1 >> s2; m[s1]++; m[s2]++; maxn = max(max(m[s1],m[s2]),maxn); // cout << maxn << endl; } int cnt = 0; for(auto i : m){ if(i.second == maxn)cnt++; } if(cnt > 1){ for(auto i : m){ if(i.second == maxn){ cout << i.first << " " << maxn << " " << cnt << endl; break;} } } else { for(auto i : m){ if(i.second == maxn){ cout << i.first << " " << i.second << endl; break; } } } return 0; }