資料結構 雜湊表(模擬雜湊表和字串雜湊)

2021-10-08 16:24:51 字數 2413 閱讀 3976

維護乙個集合,支援如下幾種操作:

「i x」,插入乙個數x;

「q x」,詢問數x是否在集合**現過;

現在要進行n次操作,對於每個詢問操作輸出對應的結果。

輸入格式

第一行包含整數n,表示運算元量。

接下來n行,每行包含乙個操作指令,操作指令為」i x」,」q x」中的一種。

輸出格式

對於每個詢問指令「q x」,輸出乙個詢問結果,如果x在集合**現過,則輸出「yes」,否則輸出「no」。每個結果佔一行。

資料範圍

1≤n≤105

−109≤x≤109

拉鍊法演算法思想:

拉鍊法儲存結構,申請乙個h[n]陣列對映輸入的資料,由於不同的資料可能會對映到同乙個位置上,所以每乙個位置上再設定鍊錶儲存資料。

程式**:

#include

#include

using

namespace std;

const

int n =

100003

;int h[n]

, e[n]

, ne[n]

, idx;

void

insert

(int x)

bool

find

(int x)

intmain()

}return0;

}

開放定址法演算法思路:

申請乙個陣列h[n]存放對映陣列,若某個數對映的位置已經被其他數占領,則向後移動一位,直到找到空位置。find(x)函式就是尋找空位置並返回它應該被放置的位置。

程式**:

#include

#include

using

namespace std;

const

int n =

200003

, null =

0x3f3f3f3f

;int h[n]

;int

find

(int x)

return k;

}int

main()

}return0;

}

給定乙個長度為n的字串,再給定m個詢問,每個詢問包含四個整數l1,r1,l2,r2,請你判斷[l1,r1]和[l2,r2]這兩個區間所包含的字串子串是否完全相同。

字串中只包含大小寫英文本母和數字。

輸入格式

第一行包含整數n和m,表示字串長度和詢問次數。

第二行包含乙個長度為n的字串,字串中只包含大小寫英文本母和數字。

接下來m行,每行包含四個整數l1,r1,l2,r2,表示一次詢問所涉及的兩個區間。

注意,字串的位置從1開始編號。

輸出格式

對於每個詢問輸出乙個結果,如果兩個字串子串完全相同則輸出「yes」,否則輸出「no」。

每個結果佔一行。

資料範圍

1≤n,m≤105

輸入樣例:

8 3aabbaabb

1 3 5 7

1 3 6 8

1 2 1 2

輸出樣例:

yesno

yes演算法基本思路:

先將字串看成p進製的數,然後將p進製數轉化為十進位制數。該題把字串所有字首的雜湊值求解出來,再算出區間的雜湊值,進行比較,若兩個雜湊值一樣,則兩個區間的字串子串是完全相同的。區間內的hash = h[ r ] - h[l - 1] *p ^(r - l + 1)

程式**:

#include

using

namespace std;

const

int n =

100010

, p =

131;

typedef

unsigned

long

long ull;

int n, m;

char str[n]

;ull h[n]

, p[n]

;int

get(

int l,

int r)

intmain()

while

(m --

)return0;

}

資料結構 雜湊表(模擬雜湊表 字串雜湊)

1.雜湊表的定義 給定表m,存在函式f key 對任意給定的關鍵字值key,代入函式後若能得到包含該關鍵字的記錄在表中的位址,則稱表m為雜湊 hash 表,函式f key 為雜湊 hash 函式。2.雜湊表的用途 把乙個較大範圍的值域對映到乙個較小的範圍 3.雜湊表的原理 通過對大數取餘運算把乙個大...

資料結構 雜湊表(雜湊表)hash table

hash table 在計算機中,雜湊表 是 一種實現了關聯陣列 抽象資料型別的資料結構,這種資料結構可以對映 鍵 key 和 值 value 補充 關聯陣列 在電腦科學中,乙個關聯陣列 associative array 對映 map 符號表 symbol table 或者是字典 dictiona...

資料結構 雜湊表 雜湊表 原理

記錄的儲存位置 f 關鍵字 這裡的對應關係f稱為雜湊函式,又稱為雜湊 hash函式 採用雜湊技術將記錄儲存在一塊連續的儲存空間中,這塊連續儲存空間稱為雜湊表或雜湊表 hash table 雜湊表hashtable key,value 就是把key通過乙個固定的演算法函式既所謂的雜湊函式轉換成乙個整型...