使用STL标准模板库的map函数
因为map函数自带排序功能,随意放入的内容都是按照字典序排列的,即从小到大
所以这道题只要处理遍历一次,然后统计并列的情况,如果并列超过1,则需要按照另一个格式输出,否则只需输出通话最多的电话号码和通话次数。
#include<cstdio>
#include<iostream>
#include<map>
#include<string>
using namespace std;
int main(){
string s1,s2;
map<string,int> mp;
mp.clear();
int n;
cin>>n;
for(int i=0;i<n;i++){
cin>>s1>>s2;
mp[s1]++;
mp[s2]++;
}
int Max=-1,num=0;
map<string,int>::iterator it;
for(it=mp.begin();it!=mp.end();it++){
if(it->second > Max){
s1 = it->first;
Max = it->second;
num=1;
}else if(it->second == Max){
num++;
}
}
if(num==1){
cout<<s1<<" "<<Max<<endl;
}else if(num > 1){
cout<<s1<<" "<<Max<<" "<<num<<endl;
}
return 0;
}