博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
hdu1247 Hat’s Words
阅读量:6716 次
发布时间:2019-06-25

本文共 1687 字,大约阅读时间需要 5 分钟。

题目:http://acm.hdu.edu.cn/showproblem.php?pid=1247

1 #include
2 #include
3 #include
4 #include
5 #include
6 using namespace std; 7 char p[50005][30]; 8 struct tree{
//建立树 9 struct tree *next[26]; 10 int n; 11 }*root;//根 12 13 void insert(char *p)//字典树添加 14 { 15 struct tree *now,*cur=root; 16 int len=strlen(p); 17 for(int i=0;i
next[p[i]-'a']==NULL)//判断字母节点是否存在 20 { 21 now=(struct tree*)malloc(sizeof(struct tree));//分配空间 22 for(int j=0;j<26;j++) 23 { 24 now->next[j]=NULL;//初始化 25 } 26 now->n=0;//初始化 27 cur->next[p[i]-'a']=now; 28 cur=cur->next[p[i]-'a']; 29 } 30 else 31 { 32 cur=cur->next[p[i]-'a']; 33 } 34 } 35 cur->n=1;//字母存在并标记为1 36 } 37 38 int find2(char *p)//查找后缀树 39 { 40 struct tree *cur=root; 41 for(;*p!='\0';) 42 { 43 int d=*p-'a'; 44 if(cur->next[d]!=NULL) 45 { 46 cur=cur->next[d]; 47 if(cur->n==1 && *(p+1)=='\0')//判断条件 48 return 1; 49 p++; 50 } 51 else 52 { 53 return 0; 54 } 55 } 56 return 0; 57 } 58 59 int find(char *p)//查找 60 { 61 struct tree *cur=root; 62 for(;*p!='\0';) 63 { 64 int d=*p-'a'; 65 cur=cur->next[d]; 66 if(cur!=NULL) 67 { 68 if(cur->n==1 && find2(p+1))//查找前缀字母是否存在,同时判断后缀树 69 return 1; 70 p++; 71 } 72 else 73 { 74 return 0; 75 } 76 } 77 return 0; 78 } 79 80 int main() 81 { 82 //freopen("in.txt","r",stdin); 83 int i=0; 84 root=(struct tree*)malloc(sizeof(struct tree));//初始化 85 for(i=0;i<26;i++) 86 { 87 root->next[i]=NULL; 88 } 89 root->n=0; 90 i=0; 91 while(scanf("%s",p[i])!=EOF) 92 { 93 insert(p[i]); 94 i++; 95 } 96 for(int j=0;j

 

转载于:https://www.cnblogs.com/xuesen1995/p/4450298.html

你可能感兴趣的文章
Python在函数中使用*和**接收元组和列表
查看>>
115. Distinct Subsequences
查看>>
C++ 指针(不论什么一个指针本身的类型都是unsigned long int型)
查看>>
[PHP] 通用网关接口CGI 的运行原理
查看>>
phoenixframe自己主动化平台在Linux环境下运行用例的说明
查看>>
Linux:sheel脚本for的用法,及日期参数+1day用法
查看>>
GetKeyState(), GetAsyncKeystate(), GetKeyboardSlate()
查看>>
函数式编程
查看>>
spring boot mybatis没有扫描jar中的Mapper接口
查看>>
ijkPlayer 集成
查看>>
Python 文件 writelines() 方法
查看>>
背水一战 Windows 10 (76) - 控件(控件基类): Control - 基础知识, 焦点相关, 运行时获取 ControlTemplate 和 DataTemplate 中的元素...
查看>>
比特币的区块结构解析
查看>>
图像滤镜艺术---Glow Filter发光滤镜
查看>>
[离散时间信号处理学习笔记] 14. 多采样率信号处理
查看>>
create-react-app 引入 antd 及 解决 antd 样式无法显示的bug
查看>>
获取图形验证码
查看>>
值得 .NET 开发者了解的15个特性
查看>>
Fresco-Facebook的图片加载框架的使用
查看>>
Android Runtime Stats
查看>>