HDU 1251 統計難題 字典樹模板題

2021-08-03 10:50:56 字數 1214 閱讀 9935

題意:給你一堆單詞,現在有多次詢問,每次詢問求以給定字串作為字首的單詞有多少個。

sample input

banana

band

beeabsolute

acmba

bband

abc

sample output23

10有兩種建樹方法,一種動態一種靜態。

一般來說靜態更好一些。

動態**:

#include#include#include#includeusing namespace std;

const int maxn = 105;

char str[maxn];

struct node

};node *root = null;

void buildtrie(char *s)

p = p->next[s[i]-'a'];

p->cnt++;

}}int findtrie(char *s)

return p->cnt;

}void deleatetrie(node *cur)//動態字典樹,有時會超記憶體, 這時就要記得釋放空間了

int main(void)

while(gets(str) != null)

printf("%d\n", findtrie(str));

return 0;

}

靜態**:

#include#include#include#includeusing namespace std;

const int maxnode = 1e6+5;

const int maxn = 27;

int sz, ch[maxnode][maxn], val[maxnode];

char str[15];

void init()

void insert(char *s)

u = ch[u][s[i]-'a'];

val[u]++;

}}int match(char *s)

return val[u];

}int main(void)

while(gets(str) != null)

printf("%d\n", match(str));

return 0;

}

HDU 1251統計難題(字典樹)

經典的字典樹題目。字典樹 又稱單詞查詢樹,trie樹,是一種樹形結構,是一種雜湊樹的變種。典型應用是用於統計,排序和儲存大量的字串 但不僅限於字串 所以經常被搜尋引擎系統用於文字詞頻統計。它的優點是 利用字串的公共字首來節約儲存空間,最大限度地減少無謂的字串比較,查詢效率比雜湊表高。ac code ...

HDU1251統計難題 字典樹

題目 problem description ignatius最近遇到乙個難題,老師交給他很多單詞 只有小寫字母組成,不會有重複的單詞出現 現在老師要他統計出以某個字串為字首的單詞數量 單詞本身也是自己的字首 input 輸入資料的第一部分是一張單詞表,每行乙個單詞,單詞的長度不超過10,它們代表的...

hdu 1251 統計難題 字典樹

problem description ignatius最近遇到乙個難題,老師交給他很多單詞 只有小寫字母組成,不會有重複的單詞出現 現在老師要他統計出以某個字串為字首的單詞數量 單詞本身也是自己的字首 input 輸入資料的第一部分是一張單詞表,每行乙個單詞,單詞的長度不超過10,它們代表的是老師...