ACM hdu 1251 統計難題 (字典樹)

2021-09-06 17:43:18 字數 1377 閱讀 5154

problem description

ignatius近期遇到乙個難題,老師交給他非常多單詞(僅僅有小寫字母組成,不會有反覆的單詞出現),如今老師要他統計出以某個字串為字首的單詞數量(單詞本身也是自己的字首).

input

輸入資料的第一部分是一張單詞表,每行乙個單詞,單詞的長度不超過10,它們代表的是老師交給ignatius統計的單詞,乙個空行代表單詞表的結束.第二部分是一連串的提問,每行乙個提問,每乙個提問都是乙個字串.

注意:本題僅僅有一組測試資料,處理到檔案結束.

output

對於每乙個提問,給出以該字串為字首的單詞的數量.

sample input

banana band bee absolute acm ba b band abc

sample output

2 3 1 0

author

ignatius.l

解題思路:

trie樹

,是一種

樹形結構

,是一種雜湊樹的變種。典型應用是用於統計,排序和儲存大量的

字串(但不僅限於字串),所以常常被搜尋引擎系統用於文字詞頻統計。它的長處是:利用字串的公共字首來降低查詢時間,最大限度地降低無謂的字串比較,查詢效率比

雜湊表高。

學習了字典樹之後,認為它非常明顯的就是用空間來換時間,空間複雜度特別大,比方字典數單單存26個小寫字母,那麼每乙個節點的孩子節點都有26個孩子節點,字典樹中的每一層都保留著不同單詞的同樣字母。

為了好說明,如果,全部的單詞僅僅包含a,b,c,d四個字母,那麼樹是這樣建立的。

題目是要求統計出以某個字串為字首的單詞數量,字典樹入門題。

**:

#include #include #include #include using namespace std;

char str[12];

const int maxn=26;//孩子節點的最大個數,假設是僅僅有26個字母,就用26就能夠了。

struct trie//樹的結構體

;trie root;

/*void init(trie t)

*///不須要單獨對根節點初始化

void createtrie(char *str)

else

}}int find(char *str)

return p->cnt;

}int main()

while(scanf("%s",str)!=eof)

return 0;

}

ACM hdu 1251 統計難題 (字典樹)

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

HDU 1251統計難題(字典樹)

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

HDU1251統計難題 字典樹

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