給定大量手機使用者聯絡歷史,找出其中通話次數最多的聊天狂人。
輸入首先給出正整數n(≤10^5)
,為聯絡歷史條數。隨後n行,每行給出一條聯絡歷史。簡單起見,這裡只列出撥出方和接收方的11位數字構成的手機號碼,其中以空格分隔。
在一行中給出聊天狂人的手機號碼及其通話次數,其間以空格分隔。如果這樣的人不唯一,則輸出狂人中最小的號碼及其通話次數,並且附加給出並列狂人的人數。
4
13005711862 13588625832
13505711862 13088625832
13588625832 18087925832
15005713862 13588625832
13588625832 3
/*613005711862 13588625832
13505711862 13088625832
13588625832 18087925832
15005713862 13588625832
13005711862 15005713862
13005711862 15005713862
*/#include
#include
#include
using
namespace
std;
const
int maxn = 100010
;map
mp;void input(string
str)
else
}int
main()
map::iterator it =mp.begin();
int most_time = -1
;
int most_num = 0
;
string
most_id;
for (it = mp.begin(); it != mp.end(); it++)
else
if(it->second ==most_time )}}
if (1 ==most_num)
else
return0;
}
雜湊方法
#include#include#include
const
int maxn = 12
;typedef
struct listnode *position;
typedef
struct htable *hashtable;
struct
listnode
;struct
htable
;hashtable createhash(
intn);
int nextprime(int
n);void insert(hashtable h, char *key);
void
solve(hashtable h);
void
freehashtable(hashtable h);
intmain()
solve(h);
freehashtable(h);
return0;
}hashtable createhash(
intn)
returnh;}
//查詢比n大的最小質數
int nextprime(int
n) }
returni;}
void insert(hashtable h, char *key)
if(p)
else
}void
solve(hashtable h)
else
if(p->count ==max)
}p = p->next;}}
if (1 ==num)
else
}void
freehashtable(hashtable h)
}free(h->list);
}
11 雜湊1 電話聊天狂人 25分
給定大量手機使用者聯絡歷史,找出其中通話次數最多的聊天狂人。輸入首先給出正整數nn 10 5 為聯絡歷史條數。隨後n 行,每行給出一條聯絡歷史。簡單起見,這裡只列出撥出方和接收方的11位數字構成的手機號碼,其中以空格分隔。在一行中給出聊天狂人的手機號碼及其通話次數,其間以空格分隔。如果這樣的人不唯一...
11 雜湊1 電話聊天狂人 25 分
給定大量手機使用者聯絡歷史,找出其中通話次數最多的聊天狂人。輸入首先給出正整數n 10 5 為聯絡歷史條數。隨後n行,每行給出一條聯絡歷史。簡單起見,這裡只列出撥出方和接收方的11位數字構成的手機號碼,其中以空格分隔。在一行中給出聊天狂人的手機號碼及其通話次數,其間以空格分隔。如果這樣的人不唯一,則...
11 雜湊1 電話聊天狂人 25 分
給定大量手機使用者聯絡歷史,找出其中通話次數最多的聊天狂人。輸入首先給出正整數n 為聯絡歷史條數。隨後n行,每行給出一條聯絡歷史。簡單起見,這裡只列出撥出方和接收方的11位數字構成的手機號碼,其中以空格分隔。在一行中給出聊天狂人的手機號碼及其通話次數,其間以空格分隔。如果這樣的人不唯一,則輸出狂人中...