字串關鍵字的雜湊對映

2021-08-28 08:14:50 字數 1156 閱讀 7483

7-14 字串關鍵字的雜湊對映 (25 分)

給定一系列由大寫英文本母組成的字串關鍵字和素數p,用移位法定義的雜湊函式h(key)將關鍵字key中的最後3個字元對映為整數,每個字元佔5位;再用除留餘數法將整數對映到長度為p的雜湊表中。例如將字串azdeg插入長度為1009的雜湊表中,我們首先將26個大寫英文本母順序對映到整數0~25;再通過移位將其對映為3×32​2​​+4×32+6=3206;然後根據表長得到,即是該字串的雜湊對映位置。

發生衝突時請用平方探測法解決。

輸入第一行首先給出兩個正整數n(≤500)和p(≥2n的最小素數),分別為待插入的關鍵字總數、以及雜湊表的長度。第二行給出n個字串關鍵字,每個長度不超過8位,其間以空格分隔。

在一行內輸出每個字串關鍵字在雜湊表中的位置。數字間以空格分隔,但行末尾不得有多餘空格。

4 11

hello annk zoe loli

3 10 4 0
6 11

llo anna nnk zoj innk aaa

3 0 10 9 6 1
法一:我的爛**

#include using namespace std;

sets;

mapm;

int main()

else if(ss.size()==1)

else has = 0;

// cout<=p)

has1=(has+i*i)%p;

else

has1=has+i*i;

if(s.count(has1)==0)

int getpt(char key[9], int p)

else

}else

}if(hashval - i * i >= 0)

}else}}

}return hashval;

}int main()

if(n > 0)

printf("%d", res[1]);

for(int i = 2; i <= n; ++i)

printf(" %d", res[i]);

}

字串關鍵字的雜湊對映 (25 分)

給定一系列由大寫英文本母組成的字串關鍵字和素數p,用移位法定義的雜湊函式h key 將關鍵字key中的最後3個字元對映為整數,每個字元佔5位 再用除留餘數法將整數對映到長度為p的雜湊表中。例如將字串azdeg插入長度為1009的雜湊表中,我們首先將26個大寫英文本母順序對映到整數0 25 再通過移位...

7 15 字串關鍵字的雜湊對映 (25 分)

7 15 字串關鍵字的雜湊對映 25 分 給定一系列由大寫英文本母組成的字串關鍵字和素數p,用移位法定義的雜湊函式h key 將關鍵字key中的最後3個字元對映為整數,每個字元佔5位 再用除留餘數法將整數對映到長度為p的雜湊表中。例如將字串azdeg插入長度為1009的雜湊表中,我們首先將26個大寫...

7 43 字串關鍵字的雜湊對映 25 分

給定一系列由大寫英文本母組成的字串關鍵字和素數p,用移位法定義的雜湊函式h key 將關鍵字key中的最後3個字元對映為整數,每個字元佔5位 再用除留餘數法將整數對映到長度為p的雜湊表中。例如將字串azdeg插入長度為1009的雜湊表中,我們首先將26個大寫英文本母順序對映到整數0 25 再通過移位...