home
web board
problemset
standing
status
statistics
time limit: 1 sec
memory limit: 128 mb
submit: 1008
solved: 310 [
submit][
status][
web board]
雜湊法中,雜湊函式構造方法多種多樣,同時對於同一雜湊函式解決衝突的方法也可以不同。兩者是影響查詢演算法效能的關鍵因素。
在此用以下雜湊函式來實現字串雜湊值的計算。
h(key) = (s[0] * 31^(n – 1) + s[1] * 31 ^ (n – 2) + ….. + s[n – 1] * 31 ^ 0) % mod;
此處 ^ 代表乘方,s[i] 代表字元的ascii值
用二次探測再雜湊的方法處理衝突hi = ( h(key) + di ) % mod
di=1,-1,4,-4,9, -9, 16, -16… 注:輸入必須保證衝突處理所取的步長小於(1 << 31)
input
樣例包含多組,到eof結束。
對於每組樣例,第一行輸入兩個數n和mod (其中1 <= n <= 1000,n < mod <= 2000且mod為素數,字串長度小於1000),n和mod分別表示字串個數和模。
接下來n行,每行乙個只含有小寫字母的字串。
樣例包含多組,到eof結束。
對於每組樣例,第一行輸入兩個數n和mod (其中1 <= n <= 1000,n < mod <= 2000且mod為素數,字串長度小於1000),n和mod分別表示字串個數和模。
接下來n行,每行乙個只含有小寫字母的字串。
依次輸出每個關鍵字在hash函式中的儲存下標序列(按照雜湊值從小到大輸出字串)。
5 11rgfslwdrzmiugiobmernjumq
5 4 6 2 3
雜湊值計算過程中要注意取模,防止溢位
可能用到的兩個取模公式:(a + b) % mod = (a % mod + b % mod) % mod
(a – b) % mod = (a % mod – b % mod + mod) % mod [
submit][
status][
web board]
#include#include#includeusing namespace std;
#define m 10005
typedef string keytype;
typedef struct
hashtable;
long long int pow(int a,int b,int mod)
return x;
}int h(string s,int mod)
for(int i=0; icout<}
}
資料結構實驗 雜湊表
time limit 1000ms memory limit 65536k 有疑問?點這裡 在n個數中,找出出現次數最多那個數字,並且輸出出現的次數。如果有多個結果,輸出數字最小的那乙個。單組資料,第一行數字n 1 n 100000 接下來有n個數字,每個數字不超過100000000 出現次數最多的...
資料結構實驗 雜湊表
time limit 1000ms memory limit 65536k 有疑問?點這裡 在n個數中,找出出現次數最多那個數字,並且輸出出現的次數。如果有多個結果,輸出數字最小的那乙個。單組資料,第一行數字n 1 n 100000 接下來有n個數字,每個數字不超過100000000 出現次數最多的...
資料結構實驗 雜湊表
j 資料結構實驗 雜湊表 description 在n個數中,找出出現次數最多那個數字,並且輸出出現的次數。如果有多個結果,輸出數字最小的那乙個。input 單組資料,第一行數字n 1 n 100000 接下來有n個數字,每個數字不超過100000000 output 出現次數最多的數字和次數。sa...