hd1277 全文檢索 字典樹

2021-10-03 17:13:47 字數 1550 閱讀 7254

[key no. 1] 934134543994403697353070375063

[key no. 2] 261985859328131064098820791211

[key no. 3] 306654944587896551585198958148

[key no. 4] 338705582224622197932744664740

[key no. 5] 619212279227080486085232196545

[key no. 6] 333721611669515948347341113196

[key no. 7] 558413268297940936497001402385

[key no. 8] 212078302886403292548019629313

[key no. 9] 877747771811648872332524287543

[key no. 10] 488616113330539801137218227609

sample output

found key: [key no. 9] [key no. 5]

思路:將要查詢是否存在的串建樹,用vis一邊記錄下標一邊作為尾結點的標記,通過更換起始節點依次查詢資訊流數字串;

#include

using

namespace std;

#define ll long long

const

int maxn=

400005

;int trie[maxn][26

];int vis[maxn]

;char q[

400005];

int tot=1;

int cnt=0;

int flag=0;

string ss;

void

insert

(int num)

p=trie[p]

[ch];}

vis[p]

=num;

///標記字串結尾,用來檢驗該字串是否會出現

}void

query

(char s)

printf

(" [key no. %d]"

,vis[p]);

vis[p]=0

;///避免重複檢索}if

(trie[p]

[ch]==0

) p=trie[p]

[ch];}

}int

main()

}for

(int i=

1;i<=m;i++

)int len=

strlen

(q);

for(

int i=

0;i)///依次變化起始匹配位置

if(flag==0)

printf

("no key can be found !\n");

else

printf

("\n");

}

hdu 1277 全文檢索 AC自動機

去年9月份看的ac自動機,記得那時簡直要崩潰了,怎麼看都看不懂。今天發現原來是這麼的簡單。也算是進步了吧 細節比較多的入門題,測了下以前的板子對不對。居然被除錯語句坑了2發,哎呀呀 includeusing namespace std const int maxn 1e4 10 const int ...

hdu1277 全文檢索 AC自動機

解題關鍵 ac自動機模板題,注意字元匹配時若無法匹配,直接用 s即可。1 include2 using namespace std 3 typedef long long ll 4 const int n 12 5 const int maxn 600010 6 int num,ans 10020 ...

什麼叫全文檢索 全文檢索概念

全文檢索是指計算機索引程式通過掃瞄文章中的每乙個詞,對每乙個詞建立乙個索引,指明該詞在文章中出現的次數和位置,當使用者查詢時,檢索程式就根據事先建立的索引進行查詢,並將查詢的結果反饋給使用者的檢索方式。這個過程類似於通過字典中的檢索字表查字的過程。全文檢索的方法主要分為按字檢索和按詞檢索兩種。按字檢...