HDU 1251字典樹
Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 131070/65535 K (Java/Others)
Total Submission(s): 30346 Accepted Submission(s): 11802
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
Recommend
Ignatius.L
#include<cstring>
#include<cstdio>
struct node{
int s;
node *ch[26];
node(){
s=0;
for (int i=0;i<26;++i) ch[i]=NULL;
}
};
char tmp,str1[11];
node *tree;
void insert1(char str1[]){
node *p=tree;
int l=strlen(str1);
for (int i=0;i<l;++i){
if (p->ch[str1[i]-'a']==NULL) {
node *p1=new node();
p->ch[str1[i]-'a']=p1;
}
p=p->ch[str1[i]-'a' ];
p->s++;
}
return ;
}
int check(char str1[]){
int l=strlen(str1);
node *p=tree;
for (int i=0;i<l;++i){
if (p->ch[str1[i]-'a']==NULL) return 0;
p=p->ch[str1[i]-'a'];
}
return p->s;
}
int main(){
freopen("hdu1251.in","r",stdin);
//freopen("hdu1251.out","w",stdout);
tree=new node();
while(1){
scanf("%c",&tmp);
if (tmp=='\n') break;
int j=0;
while (tmp!='\n'){
str1[j++]=tmp;
scanf("%c",&tmp);
}
str1[j]='\0';
//printf("%s\n",str1);
insert1(str1);
}
/*scanf("%c",&tmp);
int i=1,j=0;
if (tmp!='\n'){
while (tmp!='\n'){
str1[j++]=tmp;
scanf("%c",tmp);
}
}
*/
while(scanf("%s",str1)>0){
printf("%d\n",check(str1));
}
return 0;
}
相關推薦
統計難題 HDU - 1251 (字典樹)
傳送門 題意:給出一組單詞,然後再給出一組字首,問這組單詞擁有這組字首的單詞數量是多少? 題解:使用字典樹,在insert函式中稍稍變形即可。 附上程式碼: #include<bits/stdc++.h> using namespace std; const int
HDU-1251-字典樹
原題: Ignatius最近遇到一個難題,老師交給他很多單詞(只有小寫字母組成,不會有重複的單詞出現),現在老師要他統計出以某個字串為字首的單詞數量(單詞本身也是自己的字首). Input 輸入資料的第
統計難題 HDU - 1251 -字典樹-連結串列實現
統計難題 HDU - 1251 題意:輸入資料的第一部分是一張單詞表,每行一個單詞,單詞的長度不超過10,它們代表的是老師交給Ignatius統計的單詞 ,一個空行代表單詞表的結束.第二部分是一連串的提問,每行一個提問,每個提問都是一個字串
HDU 1251字典樹
Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 131070/65535 K (Java/Others) Total Submission(s): 30346 Accepted Subm
hdu 1251 字典樹
#include <iostream> #include <cstring> #include <cstdio> using namespace std; struct node { int num; in
HDU 5687 字典樹入門
!= 超過 成了 spl 統計 names cnblogs nbsp otto Problem C Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others)To
HDU 5536 字典樹
http insert span del 現場 urn include pri com 題意:就是公式。 這現場賽O(n^3)能過,覺得太沒天理了。 做法:字典樹,枚舉兩個數,然後在字典樹上貪心的跑。 #include <bits/stdc+
Repository HDU - 2846 (字典樹)
傳送門 題意:給出一組單詞,再給出一組字串,問這組字串在這組單詞出現過多少次? 題解:使用字典樹,對於每個單詞,從每一個位置開始都放入字典樹中,但是有一點要注意,如果字串是abab,這樣如果統計ab那麼豈不是多算了一個麼,所以使用一個數組統計當前到了哪個單詞(具體可見程式碼),最後跟據字典樹
Problem C HDU - 5687(字典樹的三種操作)
傳送門 題意:有三種操作,第一種是插入一個單詞,第二種是刪除具有這個字首的所有單詞,第三種是查詢是否具有這個字首的單詞 題解:使用字典樹,挑戰最大的是刪除這個操作,可以這樣,如果沒有這個字首直接退出,如果有這個字首,那麼先將這個字首之後所有的都消去,再回上來刪除具有這個字首的數量(很重要),
HDU 1671 字典樹(判斷是否有一個串是另一個串的子串)。
給你多個由0-9構成的字串集合,問你這個集合中是否有一個字串是其他字串的字首? #include<iostream> #include<cstdio> #include<algorithm> #include<cstring> #include&l
1251 (字典樹)
傳送門 題意:給出一組單詞,然後再給出一組字首,問這組單詞擁有這組字首的單詞數量是多少? 題解:使用字典樹,在insert函式中稍稍變形即可。 附上程式碼: #include<bits/stdc++.h> using namespace std; c
Repository HDU - 2846 字典樹
return name class n) tor con cout () scan 題意:給出很多很多很多很多個 單詞 類似搜索引擎一下 輸入一個單詞 判斷有一個字符串包含這個單詞 思路:字典樹變體,把每個單詞的後綴都扔字典樹裏面,這裏要註意dd是一個單詞 但是把d
Phone List HDU - 1671 字典樹
題意:給出一堆一組一組的數字 判斷有沒有哪一個是另外一個的字首 思路:字典樹 插入的同時進行判斷 不過 當處理一組數字的時候 需要考慮的有兩點1.是否包含了其他的序列2.是否被其他序列包含 剛開始開的1e4死活不過 1e5直接過了。。 1 #in
hdu 1247 字典樹
給定一系列的單詞,少於50000個,輸出這些單詞中由兩個出現過的單片語成的單詞。 開始用gets輸入,無限wrong!猜測可能資料中有空行。 換了scanf就AC了。 #include<bitset> //G++ 15ms #include<map>
HDU 1004字典樹
#include<cstdio> #include<cstring> int n,nn,max,maxi; char st[1100][20]; struct node{
hdu 2846 字典樹
用指標版本在HDUOJ上的G++會超記憶體,用C++可以過。 用陣列版本在HDUOJ上的G++就可以過了。 指標版本和陣列版本其實用的記憶體理論上是等價的。 原來應該是HDUOJ的評測機是windows執行G++,編譯應該會有一些問題。 指標版本: #include &l
[ACM] hdu 1251 統計難題 (字典樹)
第一次 stdio.h scrip null 明顯 output 代碼 ane 處理 統計難題 Problem Description Ignatius近期遇到一個難題,老師交給他非常多單詞(僅僅有小寫字母組成,不會有反復的單詞出現),如今老師要他統計出以某
統計難題HDU-1251(字典樹)
wkt mtu shp isl com shuf rrd xe8 xdg yhly5c梅覆來粕倜叛http://docstore.docin.com/sina_6341912133p1s7b1澇淪家濤缺細http://www.docin.com/gxk352s1mtus俟酚
HDU - 1251 統計難題 【字典樹Trie】
init nan fail printf pos 小寫 out esp spa Ignatius最近遇到一個難題,老師交給他很多單詞(只有小寫字母組成,不會有重復的單詞出現),現在老師要他統計出以某個字符串為前綴的單詞數量(單詞本身也是自己的前綴). Input輸入數據
HDU-1251統計難題 ,字典樹
num node IT print std ret mem algo cstring 題意:問許多單詞中,前綴是某個字符串的個數有多少個; 思路: 用字典樹建立,每個節點帶上num,記錄每次insert是,經過這個點的次數, 每次詢問,找到這個前綴對應的節點的num