SDUT 1500 Message Flood
2012-08-14 14:23
253 查看
简单trie树。
代码如下:
代码如下:
#include<iostream> #include<string.h> #include<cstdio> #include<cstdlib> using namespace std; int n; typedef struct node { int flag; node *next[26]; }node; void strlwr(char *s) //大写转换小写 { int i; for (i=0; i<strlen(s); i++) if (s[i] >= 'A' && s[i] <= 'Z') s[i]=s[i]+32; } node *newnode() { int i; node *p=new node; p->flag=0; for (i=0; i<26; i++) p->next[i] = NULL; return p; } void insert(node *rt, char s[]) //插入新结点 { int i, t; node *p=rt; int len=strlen(s); for (i=0; i<len; i++) { t=s[i]-'a'; if (p->next[t] == NULL) p->next[t]=newnode(); p=p->next[t]; } p->flag=1; } void search(node *rt, char *s) //查找 { int i, t; node *p=rt; int len=strlen(s); for (i=0; i<len; i++) { t=s[i]-'a'; if (p->next[t] == NULL) return ; p=p->next[t]; } if (p->flag == 1) n--; if (p->flag) p->flag++; } void del(node * p) //删除 { int i; if(p) { for(i=0;i<26;i++) if(p->next[i]) del(p->next[i]); } free(p); p=NULL; } int main() { int m, i; char str[15]; while(cin >> n, n) { node *rt=NULL; cin >> m; rt=newnode(); for (i=0; i<n; i++) { cin >> str; strlwr(str); insert(rt, str); } for (i=0; i<m; i++) { cin >> str; strlwr(str); search(rt, str); } del(rt); cout << n << endl; } return 0; }
相关文章推荐
- SDUT 1500-Message Flood(set)
- sdut1500 Message Flood
- SDUT 1500 Message Flood(字典树 && 模板)
- SDUT 1500 Message Flood
- sdut 1500 Message Flood
- SDUT1500_Message Flood(字典树)
- sdut 1500 Message Flood
- SDUT 1500-Message Flood(set)
- sdut 1500 Message Flood
- sdut 1500 Message Flood(Trie树)
- SDUT-1500-(字典树)
- SDUTOJ 1500 ——Message Flood 字典树或map
- oj1500(Message Flood)字典树
- 1500_Message Flood
- 【1500】Message Flood (SDUTOJ)
- 【1500】Message Flood (SDUTOJ)
- SDUT 1500 Message Flood trie树
- sdut2053整理音乐
- sdut 悼念512汶川大地震遇难同胞
- BZOJ 1500 [NOI2005]维修数列