來自:pta_資料結構_**聊天狂人
給定大量手機使用者聯絡歷史,找出其中通話次數最多的聊天狂人。
輸入格式:
輸入首先給出正整數n(≤10^5),為聯絡歷史條數。隨後n行,每行給出一條聯絡歷史。簡單起見,這裡只列出撥出方和接收方的11位數字構成的手機號碼,其中以空格分隔。
輸出格式:
在一行中給出聊天狂人的手機號碼及其通話次數,其間以空格分隔。如果這樣的人不唯一,則輸出狂人中最小的號碼及其通話次數,並且附加給出並列狂人的人數。
輸入樣例:
413005711862 13588625832
13505711862 13088625832
13588625832 18087925832
15005713862 13588625832
輸出樣例:
13588625832 3
**:
#include
#include
#include
#include
#include
#define keylength 11
#define maxd 5
#define maxtablesize 1000000
/* ——————hashtable定義開始—————— */
typedef
char elementtype[keylength +1]
;typedef
int index;
typedef
struct lnode *ptrtolnode;
struct lnode
;typedef ptrtolnode position;
typedef ptrtolnode list;
typedef
struct tblnode *hashtable;
struct tblnode
;/* ——————hashtable定義結束—————— */
intnextprime
(int n)
;int
hash
(int key,
int p)
;position find
(hashtable h, elementtype key)
;hashtable createtable
(int tablesize)
;bool insert
(hashtable h, elementtype key)
;void
scanandoutput
(hashtable h)
;void
destorytable
(hashtable h)
;int
main()
scanandoutput
(h);
destorytable
(h);
return0;
}int
nextprime
(int n)
return p;
}int
hash
(int key,
int p)
position find
(hashtable h, elementtype key)
hashtable createtable
(int tablesize)
return h;
}bool insert
(hashtable h, elementtype key)
else
}void
scanandoutput
(hashtable h)
else
if(ptr->count == maxcnt)
ptr = ptr->next;}}
printf
("%s %d"
, minphone, maxcnt);if
(pcnt >1)
printf
(" %d"
, pcnt)
;printf
("\n");
}void
destorytable
(hashtable h)
}free
(h->heads)
;free
(h);
}
11 雜湊1 電話聊天狂人
給定大量手機使用者聯絡歷史,找出其中通話次數最多的聊天狂人。輸入格式 輸入首先給出正整數n 10 5 為聯絡歷史條數。隨後n行,每行給出一條聯絡歷史。簡單起見,這裡只列出撥出方和接收方的11位數字構成的手機號碼,其中以空格分隔。輸出格式 在一行中給出聊天狂人的手機號碼及其通話次數,其間以空格分隔。如...
11 雜湊1 電話聊天狂人
11 雜湊1 聊天狂人 題意 給出n個聯絡歷史,每個聯絡歷史分別包含兩個 號碼,計算出通話次數最多的號碼和其通話次數。如果有多個通話次數最多的號碼,輸出號碼最小的那個且再輸出通話次數最多的號碼個數。思路 用map容器把每個號碼與通話次數聯立起來,最後遍歷一遍map找到通話次數最多的號碼。map會按照...
11 雜湊1 電話聊天狂人 25分
給定大量手機使用者聯絡歷史,找出其中通話次數最多的聊天狂人。輸入首先給出正整數nn 10 5 為聯絡歷史條數。隨後n 行,每行給出一條聯絡歷史。簡單起見,這裡只列出撥出方和接收方的11位數字構成的手機號碼,其中以空格分隔。在一行中給出聊天狂人的手機號碼及其通話次數,其間以空格分隔。如果這樣的人不唯一...