個人心得:先來了解下字典樹的概念吧。
trie樹,即字典樹,又稱單詞查詢樹或鍵樹,是一種樹形結構,是一種雜湊樹的變種。典型應用是用於統計和排序大量的字串(但不僅限於字串),所以經常被搜尋引擎系統用於文字詞頻統計。它的優點是:最大限度地減少無謂的字串比較,查詢效率比雜湊表高。
trie的核心思想是空間換時間。利用字串的公共字首來降低查詢時間的開銷以達到提高效率的目的。
它有3個基本性質:
1,根節點不包含字元,除根節點外每乙個節點都只包含乙個字元。
2,從根節點到某一節點,路徑上經過的字元連線起來,為該節點對應的字串。
3,每個節點的所有子節點包含的字元都不相同
用自己的理解是就是根據字首建立字典樹,如果輸入的字串存在相同字首那麼此時這個數節點sum加一,否則建立新的子樹,查詢的時候
直接找到底的節點,輸出節點資料就好了。
題目:ignatius最近遇到乙個難題,老師交給他很多單詞(只有小寫字母組成,不會有重複的單詞出現),現在老師要他統計出以某個字串為字首的單詞數量(單詞本身也是自己的字首).
input輸入資料的第一部分是一張單詞表,每行乙個單詞,單詞的長度不超過10,它們代表的是老師交給ignatius統計的單詞,乙個空行代表單詞表的結束.第二部分是一連串的提問,每行乙個提問,每個提問都是乙個字串.
注意:本題只有一組測試資料,處理到檔案結束.
output對於每個提問,給出以該字串為字首的單詞的數量.
sample input
bananasample outputband
beeabsolute
acmba
bband
abc
2310
1 #include2 #include3 #include4 #include5 #include6 #include7using
namespace
std;
8#define inf 1<<29
9#define nu 4000005
10#define maxnum 200005
11#define num 26
12int
n;13 typedef structt14
tirelode,*tire;
1819
tirelode tire;
20void createtire(char *str)
2134
else
3539}40
}41int findtire(char *str)
4252
return p->sum;53}
54int
main()
5566
return0;
67 }
統計難題(字典樹模板)
題目描述 ignatius最近遇到乙個難題,老師交給他很多單詞 只有小寫字母組成,不會有重複的單詞出現 現在老師要他統計出以某個字串為字首的單詞數量 單詞本身也是自己的字首 輸入描述 輸入資料的第一部分是一張單詞表,每行乙個單詞,單詞的長度不超過10,它們代表的是老師交給ignatius統計的單詞,...
統計難題(字典樹模板題)
ignatius最近遇到乙個難題,老師交給他很多單詞 只有小寫字母組成,不會有重複的單詞出現 現在老師要他統計出以某個字串為字首的單詞數量 單詞本身也是自己的字首 這個題意還是很好理解的,輸入方面稍微有一點點坑,但是習慣就好 判斷讀入的是不是一串空得字串,可以用gets 函式去實現,可以通過讀入的字...
統計難題(字典樹)
description ignatius最近遇到乙個難題,老師交給他很多單詞 只有小寫字母組成,不會有重複的單詞出現 現在老師要他統計出以某個字串為字首的單詞數量 單詞本身也是自己的字首 input 輸入資料的第一部分是一張單詞表,每行乙個單詞,單詞的長度不超過10,它們代表的是老師交給ignati...