time limit: 400ms
memory limit: 65536kb
submit
statistic
problem description
給定的一組無重複資料的正整數,根據給定的雜湊函式建立其對應hash表,雜湊函式是h(key)=key%p,p是雜湊表表長,p是素數,處理衝突的方法採用平方探測方法,增量di=±i^2,i=1,2,3,...,m-1
input
輸入一組測試資料,資料的第1行給出兩個正整數n(n <= 500)和p(p >= 2n的最小素數),n是要插入到雜湊表的元素個數,p是雜湊表表長;第2行給出n個無重複元素的正整數,資料之間用空格間隔。
output
按輸入資料的順序輸出各數在雜湊表中的儲存位置 (hash表下標從0開始),資料之間以空格間隔,以平方探測方法處理衝突。
example input
4 1110 6 4 15
9 11
47 7 29 11 9 84 54 20 30
example output
10 6 4 53 7 8 0 9 6 10 2 1
hint
author
此題需要注意的地方就是處理增量的時候,要記得每乙個數值都需要處理+ --兩次情況
#include #include#includeusing namespace std;
int hash[3000];//用雜湊表來儲存關鍵字的位置
int num[3000];//記錄每個關鍵字的位置
int count;//計數
int main()
else if(hash[y]==x)//雜湊表中已存在關鍵字
else//不同關鍵字有相同的餘數,進行衝突處理*/}
else*/}
if(nnum==-1)//每乙個數的兩次增量完成後j自加一
nnum=nnum*-1;//修改變數的值使每乙個數值都能進行兩次增量
}hash[y]=x;//關鍵字存入雜湊表中
num[++count]=y;}}
for(int i=0;i<=count;i++)
else
}printf("\n");
}return 0;
}
資料結構實驗之查詢五 平方之雜湊表
time limit 400ms memory limit 65536k 給定的一組無重複資料的正整數,根據給定的雜湊函式建立其對應hash表,雜湊函式是h key key p,p是雜湊表表長,p是素數,處理衝突的方法採用平方探測方法,增量di i 2,i 1,2,3,m 1 輸入一組測試資料,資料...
資料結構實驗之查詢五 平方之雜湊表
time limit 400ms memory limit 65536k 有疑問?點這裡 給定的一組無重複資料的正整數,根據給定的雜湊函式建立其對應hash表,雜湊函式是h key key p,p是雜湊表表長,p是素數,處理衝突的方法採用平方探測方法,增量di i 2,i 1,2,3,m 1 輸入一...
資料結構實驗之查詢五 平方之雜湊表
time limit 400ms memory limit 65536k 給定的一組無重複資料的正整數,根據給定的雜湊函式建立其對應hash表,雜湊函式是h key key p,p是雜湊表表長,p是素數,處理衝突的方法採用平方探測方法,增量di i 2,i 1,2,3,m 1 輸入一組測試資料,資料...