字典树的题目 找了个时间刷了一点字典树的题目
来源:互联网 发布:北京宇信科技集团知乎 编辑:程序博客网 时间:2024/06/04 18:25
http://acm.sdut.edu.cn/onlinejudge2/index.php/Home/Contest/contestproblem/cid/2009/pid/2828
sdut 2828 字典树模板题目 静态的空间
#include <iostream>#include <cstdio>#include <string.h>#include <cstdlib>#include <iostream>using namespace std;struct node{ int v; node *next[26]; node() { v = 0; for(int i = 0;i < 26;i++){ next[i] = NULL; } }}T[1000000];int top;void creattrie(node *&root, char s[]){ node *p = root, *q; for(int i = 0;s[i];i++){ int id = s[i]-'a'; if(p->next[id] == NULL){ q = &T[top++]; p->next[id] = q; } p = p->next[id]; } p->v++;}int findtree(node *root, char s[]){ node *p = root; for(int i = 0;s[i];i++){ int id = s[i]-'a'; if(p->next[id]==NULL){ return 0; } p = p->next[id]; } if(p->v){ return 1; }else { return 0; }}int main(){ int n, m; char s[20]; node *root; while(~scanf("%d %d", &n, &m)){ memset(T,0,sizeof(T)); top = 0; if(n==0&&m==0) break; root = &T[top++]; for(int i = 0;i < n;i++){ scanf("%s", s); creattrie(root,s); } while(m--){ scanf("%s", s); int t = findtree(root,s); if(t){ printf("Yes\n"); }else { printf("No\n"); } } } return 0;}
http://acm.hdu.edu.cn/showproblem.php?pid=1251
hdu1251 用new过 不能申请静态的空间 否则gg
#include <iostream>#include <cstdio>#include <string.h>#include <cstdlib>#include <algorithm>using namespace std;struct node{ int v; node *next[26]; node(){ v = 0; for(int i = 0;i < 26;i++){ next[i] = NULL; } }};int top;void creat(node *&root, char s[]){ node *p = root, *q; for(int i = 0;s[i];i++){ int id = s[i]-'a'; if(p->next[id]==NULL){ q = new node; q->v++; p->next[id] = q; }else{ p->next[id]->v++; } p = p->next[id]; }}int findtree(node *root, char s[]){ node *p = root; for(int i = 0;s[i];i++){ int id = s[i]-'a'; if(p->next[id]==NULL){ return 0; } p = p->next[id]; } return p->v;}int main(){ node *root = new node; char s[15]; while(gets(s)){ if(!strcmp(s,"")) break; creat(root,s); } while(scanf("%s", s)!=EOF){ printf("%d\n", findtree(root,s)); } return 0;}
sdut 3039 看好题目要求就行跟hdu1251差不多
#include <iostream>#include <cstdio>#include <cstdlib>#include <string.h>#include <algorithm>using namespace std;struct node{ int v; node *next[10]; node() { v = 0; for(int i = 0;i < 10;i++){ next[i] = NULL; } }}T[100010];int top;void fan(char s[]){ char d[10]; strcpy(d,s); int len = strlen(d); int i; for(i=0;d[i];i++){ s[i] = d[len-1-i]; } s[i] = '\0';}void creat(node *&root, char s[]){ node *p = root, *q; for(int i = 0;s[i];i++){ int id = s[i]-'0'; if(p->next[id]==NULL){ q = &T[top++]; q->v++; p->next[id] = q; }else{ p->next[id]->v++; } p = p->next[id]; } p->v--;}int findtree(node *root, char s[]){ node *p = root; for(int i = 0;s[i];i++){ int id = s[i]-'0'; if(p->next[id]==NULL){ return 0; } p = p->next[id]; } return p->v;}int main(){ int n; char s[10]; while(~scanf("%d", &n)){ memset(T,0,sizeof(T)); top = 0; node *root = &T[top++]; for(int i = 0;i < n;i++){ scanf("%s", s); fan(s); creat(root,s); } int m;scanf("%d", &m); for(int i = 0;i < m;i++){ scanf("%s", s); fan(s); printf("%d\n", findtree(root,s)); } } return 0;}
hdu 2072一开始的前导的空格没有处理wa了
#include <iostream>#include <cstdio>#include <string.h>#include <cstdlib>#include <algorithm>using namespace std;struct node{ int v; node *next[26]; node(){ v =0; for(int i = 0;i < 26;i++){ next[i] = NULL; } }};int sum;void creat(node *&root, char s[]){ node *p =root, *q; for(int i = 0;s[i];i++){ int id = s[i] - 'a'; if(p->next[id]==NULL){ q = new node; p->next[id]=q; } p = p->next[id]; } if(p->v==0){ sum++; }p->v++;}int main(){ char s[100000]; char s1[1005]; while(gets(s)&&s[0]!='#'){ sum = 0; node *root = new node; int i = 0; int l = strlen(s); while(1){ while(s[i++]==' ');i--; if(i==l) break; int top = -1; int j; for(j = i;s[j]!=' '&&s[j]!='\0';j++){ s1[++top] = s[j]; } s1[++top] = '\0'; creat(root,s1); if(s[j]=='\0') break; else { while(s[j]==' '){ j++; } } i = j; } printf("%d\n", sum); } return 0;}
0 0
- 字典树的题目 找了个时间刷了一点字典树的题目
- 字典树Trie的简单题目
- poj2945 字典树题目
- 字典树题目总结
- 字典树题目
- 字典树题目整合
- 之前一直在找字典是如何封装的,一直找不到,自己就试着封装了个字典(Dictionary)
- 刷了个题目
- 几道字典树题目
- 字典树(模板题目)
- poj2513 很好的一道题目 并查集+字典树
- Xor Sum (01字典树)基础的字典树题目
- 做了个打印图形的题目
- 找了几个有意思的简单小题目
- Python字典的两道题目0330
- hdu 题目1298 T9(字典树)
- HDOJ 题目2846 Repository(字典树)
- 为什么使用了哈希算法的字典查集合找速度比全局遍历字典查集合速度快?
- 磁盘加密与其自动挂载及加密清除
- Density Peak改进(Hierarchical)
- Java -> 内部类与匿名内部类
- IplImag、HImage相互转换
- 深度学习笔记三-卷积神经网络中的部分问题
- 字典树的题目 找了个时间刷了一点字典树的题目
- Toolbar基本使用
- 系统调用sys_write的过程
- 求助这个netflow数据都代表什么。
- iOS的崩溃率高于Android?来自听云的数据告诉你真相
- 类与对象(附加)---day3
- 【AngularJs】使用angular-cli实现多国语言i18n
- CentOS7 64位 安装 CodeBlocks
- Android Studio2.3.1安装教程