HDU 1251 統計難題(字典樹)

2021-09-27 05:57:44 字數 1315 閱讀 7261

ignatius最近遇到乙個難題,老師交給他很多單詞(只有小寫字母組成,不會有重複的單詞出現),現在老師要他統計出以某個字串為字首的單詞數量(單詞本身也是自己的字首).

input

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

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

output

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

sample input

banana

band

beeabsolute

acmba

bband

abcsample output23

10直接放**了

指標實現

#include#include#include#includeusing namespace std;

char s[26];

int n,m;

bool p;

struct node

*root;

node *build()//建立新結點,並給結點附上值

void insert()//插入單詞

}int search() //查詢

return r->count;//返回指標指向的位置的count,即為出現的次數。

}

比如我們輸入banana,band為單詞,

輸入banana,所對應的值為

b-1,a-1,n-1,a-1.n-1,a-1;

輸入band,所對應的值更新為

b-2.a-2.n-2,d-1,a-1,n-1,a-1;

再輸入要查詢的字首,如b,ba,n,

輸入b,我們可以直接查詢到b對應的值為2

輸入ba,我們查詢到b,然後繼續向下找,找到a,a在相應位置上對應的值為2,輸出2;

輸入n,在相應位置上的n相當於null,查詢不到,返回0;

感覺如果用陣列的那種形式模擬一遍會清晰一些orz

陣列實現

#include#include#include#includeusing namespace std;

int trie[400001][26];

int len,root,tot=1;

int sum[400001];

char s[26];

void insert()

歡迎點讚,請多指教,orz

qq958518830

HDU 1251統計難題(字典樹)

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

HDU1251統計難題 字典樹

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

hdu 1251 統計難題 字典樹

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