PAT 電話聊天狂人

2021-08-03 18:53:03 字數 2628 閱讀 8075

看到乙個人的解題思路,學到了他的算時間的一種方法,特記錄一下

11-雜湊1 **聊天狂人   (25分)

給定大量手機使用者聯絡歷史,找出其中通話次數最多的聊天狂人。

輸入首先給出正整數n(

≤10​

5​​),為聯絡歷史條數。隨後

n行,每行給出一條聯絡歷史。簡單起見,這裡只列出撥出方和接收方的11位數字構成的手機號碼,其中以空格分隔。

在一行中給出聊天狂人的手機號碼及其通話次數,其間以空格分隔。如果這樣的人不唯一,則輸出狂人中最小的號碼及其通話次數,並且附加給出並列狂人的人數。

4

13005711862 13588625832

13505711862 13088625832

13588625832 18087925832

15005713862 13588625832

13588625832 3
以下是它計算時間的一種方法,學習一下!!!!!!!!!!!!!!!

int main()  

stop = clock();

duration = ((double)(stop - start)) / clk_tck;

cout << duration << endl;

start = clock();

findmax(h);

stop = clock();

duration = ((double)(stop - start)) / clk_tck;

cout << duration << endl;

destroytable(h);

}

自己對著pat教程寫了一遍,但還沒測試,先把**貼上來有時間測試

#include "stdafx.h"

#include"stdlib.h"

#include"iostream"

#include"math.h"

#define maxtablesize 100000

//**號碼11位,還有個結束符

typedef char elementtype[12];

typedef struct listnode *position;

typedef position list;

typedef struct hashtb *hashtable;

struct listnode;

struct hashtb;

int hash(int key,int p)

int nextprime( int n )

return p;

} hashtable createtable(int size)

return h;

}position find(hashtable h,elementtype key)

return p;//不管找沒找到返回p

}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\n",pcnt);

}int main()

;

typedef ptrtolnode position;

typedef ptrtolnode list;

typedef struct tblnode* hashtable;

struct tblnode

; int nextprime(int n) //雜湊表的長度一般是比預計個數大的最小素質,這裡就是求最小素數

} hashtable createtable(int hashsize)

return h;

} int hash(int key,int p)

position find(hashtable h,elementtype key)

return p;

}

void insert(hashtable h,elementtype key)

else

} void scanandoutput(hashtable h)

else if(p->count==maxcnt)

p=p->next;

} }

printf("%s %d",minphone,maxcnt);

if(pcnt>1)

printf(" %d",pcnt);

printf("\n");

}

int main()

scanandoutput(h);

return 0;

}

電話聊天狂人

給定大量手機使用者聯絡歷史,找出其中通話次數最多的聊天狂人。輸入首先給出正整數n 10 5 為聯絡歷史條數。隨後n行,每行給出一條聯絡歷史。簡單起見,這裡只列出撥出方和接收方的11位數字構成的手機號碼,其中以空格分隔。在一行中給出聊天狂人的手機號碼及其通話次數,其間以空格分隔。如果這樣的人不唯一,則...

電話聊天狂人

給定大量手機使用者聯絡歷史,找出其中通話次數最多的聊天狂人。輸入格式 輸入首先給出正整數n 10 5 為聯絡歷史條數。隨後n行,每行給出一條聯絡歷史。簡單起見,這裡只列出撥出方和接收方的11位數字構成的手機號碼,其中以空格分隔。輸出格式 在一行中給出聊天狂人的手機號碼及其通話次數,其間以空格分隔。如...

電話聊天狂人

給定大量手機使用者聯絡歷史,找出其中通話次數最多的聊天狂人。輸入格式 輸入首先給出正整數n 為聯絡歷史條數。隨後n行,每行給出一條聯絡歷史。簡單起見,這裡只列出撥出方和接收方的11位數字構成的手機號碼,其中以空格分隔。輸出格式 在一行中給出聊天狂人的手機號碼及其通話次數,其間以空格分隔。如果這樣的人...