看到乙個人的解題思路,學到了他的算時間的一種方法,特記錄一下
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位數字構成的手機號碼,其中以空格分隔。輸出格式 在一行中給出聊天狂人的手機號碼及其通話次數,其間以空格分隔。如果這樣的人...