高階實驗8-2.1 逆雜湊問題 (30分)
給定長度為 n 的雜湊表,處理整數最常用的雜湊對映是 h(x)=x%n。如果我們決定用線性探測解決衝突問題,則給定乙個順序輸入的整數序列後,我們可以很容易得到這些整數在雜湊表中的分布。例如我們將 1、2、3 順序插入長度為 3 的雜湊表ht後,將得到ht[0]=3,ht[1]=1,ht[2]=2的結果。
但是現在要求解決的是「逆雜湊問題」,即給定整數在雜湊表中的分布,問這些整數是按什麼順序插入的?
輸入格式:
輸入的第一行是正整數 n(≤1000),為雜湊表的長度。第二行給出了 n 個整數,其間用空格分隔,每個整數在序列中的位置(第乙個數字置為0)即是其在雜湊表中的位置,其中負數表示表中該位置沒有元素。題目保證表中的非負整數是各不相同的。
輸出格式:
按照插入的順序輸出這些整數,其間用空格分隔,行首尾不能有多餘的空格。注意:對應同一種分布結果,插入順序有可能不唯一。例如按照順序 3、2、1 插入長度為 3 的雜湊表,我們會得到跟 1、2、3 順序插入一樣的結果。在此規定:當前的插入有多種選擇時,必須選擇最小的數字,這樣就保證了最終輸出結果的唯一性。
輸入樣例:
11331
1312
3438
272232-
121
輸出樣例:
1
1312
2133
3438
2722
32
#include
#include
#include
using
namespace std;
const
int n=
11000
;const
int inf=
0x3f3f3f3f
;int a[n]
,b[n]
,v1[n]
,v2[n]
,ans[n]
;//v1代表待插入的資料是否用過,v2是雜湊表上的位置是否被用過
intmain()
sort
(b,b+tot)
;for
(i=0
;i)for
(j=0
;j(v2[k]==0
)break
;//雜湊表當前位置沒有被用,待插入的資料不可能順延插入了 }if
(flag)
break;}
for(i=
0;i)return0;
}
D OJ練習 雜湊查詢實驗(閉雜湊 開雜湊)
請設計乙個整型閉雜湊表,雜湊函式為除留餘數法,處理衝突時的探查方法為線性探查法,其中雜湊表的長度 除留餘數法的模和關鍵碼的個數由鍵盤輸入,再根據輸入由鍵盤輸入所有的關鍵碼。分別對三個待查值在雜湊表中進行查詢,如果找到了輸出位置,如果沒找到,輸出 none 並把該待查值插入到雜湊表中,如果雜湊表滿輸出...
Python 高階 標準雜湊機制
雜湊 hashing 技術不僅在絕大多數演算法類書籍中都有詳細介紹,而且在 python 程式當中也非常普及。該技術往往會涉及一些經由某既定物件計算而來的整數值 乍看之下似乎是隨機的 例如,我們可以用這些值來索引陣列元素 當然,需要進行某些調整,以確保其在合法的索引範圍內 在 python 語言中,...
資料結構實驗 雜湊表
time limit 1000ms memory limit 65536k 有疑問?點這裡 在n個數中,找出出現次數最多那個數字,並且輸出出現的次數。如果有多個結果,輸出數字最小的那乙個。單組資料,第一行數字n 1 n 100000 接下來有n個數字,每個數字不超過100000000 出現次數最多的...