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