7-1 电话聊天狂人

给定大量手机用户通话记录,找出其中通话次数最多的聊天狂人。

输入格式:

输入首先给出正整数N(≤105),为通话记录条数。随后N行,每行给出一条通话记录。简单起见,这里只列出拨出方和接收方的11位数字构成的手机号码,其中以空格分隔。

输出格式:

在一行中给出聊天狂人的手机号码及其通话次数,其间以空格分隔。如果这样的人不唯一,则输出狂人中最小的号码及其通话次数,并且附加给出并列狂人的人数。

输入样例:

4
13005711862 13588625832
13505711862 13088625832
13588625832 18087925832
15005713862 13588625832

输出样例:

13588625832 3

代码长度限制

16 KB

时间限制

600 ms

内存限制

64 MB

参考代码:C++(g++)

#include<bits/stdc++.h>
using namespace std;
map<string,int>f;//映射
map<string,int>::iterator it;//迭代器
int main() {
    int n;
    cin>>n;
    while(n--){
        string a,b;
        cin>>a>>b;
        f[a]++,f[b]++;//通话次数
    }
    int maxn=0,cnt;string id;
    for(it=f.begin();it!=f.end();it++) {
        if(it->second>maxn){//maxn找最大的通话次数
            maxn=it->second;
            id=it->first;//id最大通话数的人且map自动按key升序是最小的编号
            cnt=1;//cnt计数
        }
        else if(it->second==maxn)cnt++;//有相同次数多狂人统计人数
    }
    cout<<id<<" "<<maxn;
    if(cnt>1)cout<<" "<<cnt;
    return 0;
}

注:

map的基本操作函数: C++ Maps是一种关联式容器,包含“关键字/值”对

begin()返回指向map头部的迭代器

clear()删除所有元素

count() 返回指定元素出现的次数

empty() 如果map为空则返回true

 end() 返回指向map末尾的迭代器

 equal_range()  返回特殊条目的迭代器对

erase() 删除一个元素

find()  查找一个元素

 get_allocator()  返回map的配置器

 insert() 插入元素

key_comp() 返回比较元素key的函数

 lower_bound() 返回键值>=给定元素的第一个位置

 max_size()  返回可以容纳的最大元素个数

 rbegin() 返回一个指向map尾部的逆向迭代器

rend() 返回一个指向map头部的逆向迭代器

size() 返回map中元素的个数

swap() 交换两个map

upper_bound() 返回键值>给定元素的第一个位置

value_comp() 返回比较元素value的函数

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

救救孩子√

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值