题意:给出数个单词 输出单词 如果该单词 是由字典中的单词组成的

思路:字典树 先把全部建树  然后对于每一个单词进行分割,分别拿两半到字典树里面去找

小心RE!

  1. #include<bits/stdc++.h>
  2. #include<string>
  3. using namespace std;
  4. const int maxn=+;
  5. struct Trie{
  6. int ch[maxn][];
  7. int size;
  8. bool num[maxn];
  9. void init(){
  10. memset(ch,,sizeof(ch));
  11. memset(num,,sizeof(num));
  12. size=;
  13. }
  14. void insert(char*s){
  15. int i=,rc=;
  16. for( ;s[i]!='\0';i++){
  17. int id=s[i]-'a';
  18. if(ch[rc][id]==){
  19. ch[rc][id]=size++;
  20. }
  21. rc=ch[rc][id];
  22. }
  23. num[rc]=;
  24. }
  25. bool find(char*s){
  26. int i=,rc=;
  27. for(;s[i]!='\0';i++){
  28. int id=s[i]-'a';
  29. if(ch[rc][id]==){
  30. return ;
  31. }
  32. rc=ch[rc][id];
  33. }
  34. return num[rc];
  35. }
  36.  
  37. }trie;
  38. char temp[][];
  39. char s1[],s2[];
  40. int main(){
  41. int n=;
  42. trie.init();
  43. while(scanf("%s",temp[n])==){
  44. //cout<<1<<endl;
  45. n++;
  46. trie.insert(temp[n-]);
  47. }
  48. for(int i=;i<n;i++){
  49. int len=strlen(temp[i]);
  50. for(int j=;j<len-;j++){
  51. for(int k=;k<j;k++){
  52. s1[k]=temp[i][k];
  53. }
  54. s1[j]='\0';
  55. for(int k=j;k<len;k++)s2[k-j]=temp[i][k];
  56. s2[len-j]='\0';
  57. if(trie.find(s1)&&trie.find(s2)){
  58. printf("%s\n",temp[i]);
  59. break;
  60. }
  61. }
  62. }
  63. return ;
  64. }

Hat’s Words HDU - 1247 字典树的更多相关文章

  1. hdu 1247 (字典树入门)

    Hat’s Words Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total ...

  2. HDU 5687 字典树插入查找删除

    题目:http://acm.hdu.edu.cn/showproblem.php?pid=5687 2016百度之星资格赛C题,直接套用字典树,顺便巩固了一下自己对字典树的理解 #include< ...

  3. HDU 5384 字典树、AC自动机

    题目:http://acm.hdu.edu.cn/showproblem.php?pid=5384 用字典树.AC自动机两种做法都可以做 #include<stdio.h> #includ ...

  4. hdu 2112(字典树+最短路)

    HDU Today Time Limit: 15000/5000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total ...

  5. hdu 2072(字典树模板,set,map均可做)

    地址:http://acm.hdu.edu.cn/showproblem.php?pid=2072 lily的好朋友xiaoou333最近很空,他想了一件没有什么意义的事情,就是统计一篇文章里不同单词 ...

  6. Chip Factory HDU - 5536 字典树(删除节点|增加节点)

    题意: t组样例,对于每一组样例第一行输入一个n,下面在输入n个数 你需要从这n个数里面找出来三个数(设为x,y,z),找出来(x+y)^z(同样也可以(y+z)^1)的最大值 ("^&qu ...

  7. hdu 1251 字典树的应用

    这道题看了大神的模板,直接用字典树提交的会爆内存,用stl 里的map有简单有快 #include <iostream> #include <map> #include < ...

  8. hdu 2896 字典树解法

    #include <iostream> #include <cstring> #include <cstdio> #include <cstdlib> ...

  9. Repository HDU - 2846 字典树

    题意:给出很多很多很多很多个 单词 类似搜索引擎一下 输入一个单词 判断有一个字符串包含这个单词 思路:字典树变体,把每个单词的后缀都扔字典树里面,这里要注意dd是一个单词 但是把d 和dd都放字典树 ...

随机推荐

  1. mysql安装设置mysql字符集utf8及修改密码

    MySQL的下载,建议下载MySQL的解压缩版本 MySQL官网下载推荐别下最新版本的原因是因为很多之前用的jar包和工具类不兼容最新版本的 可以下5.多的和六点多的 这样的压缩包解压再配置就行了 安 ...

  2. 分解质因数FZU - 1075

    题目简述:就是给一个数,把他拆分成多个素数的乘积,这正好是算术基本定理.本题我的解决方法是埃氏素数筛+质因数保存...开始T掉了,是因为我在最后枚举了素数,保存他们的次数,然后两次for去查询他们的次 ...

  3. Day14 Python基础之os/sys/hashlib模块(十二)

    os模块 os.getcwd()  #获取当前工作路径 os.chdir(‘dirname1/dirname2/dirname3’) #改变当前脚本的工作路径,相当于cmd下的cd os.makedi ...

  4. centos7下安装python3.6

    一.wget 官网下载到本地 进入家目录: cd ~ wget https://www.python.org/ftp/python/3.6.3/Python-3.6.3.tgz下载到本地 解压移动到/ ...

  5. openstack-KVM-Memory

    一.Memory 1.查看memory信息 free -g cat /proc/meminfo dmesg | grep Memory 2.xml文件中的内存信息: vim /etc/libvirt/ ...

  6. 学习docker——命令总结

    安装docker的方法可以参考:Ubuntu.CentOS.Windows.MacOS 查看版本信息 → ~ $ docker --version Docker version 18.03.1-ce, ...

  7. MongoDB操作(1)—MongoDB java驱动核心层次结构及操作流程

    MongoDB之java驱动学习 预备: 本地运行MongoDB采用默认端口20717: 安装MongoDB驱动: 以下关键步骤. 核心层次结构或步骤: 创建连接池:MongoClient实例. 对于 ...

  8. Hbase 架构体系

    有2个节点进程,一个是master,另一是regionserver.

  9. python爬虫scrapy之downloader_middleware设置proxy代理

    一.背景: 小编在爬虫的时候肯定会遇到被封杀的情况,昨天爬了一个网站,刚开始是可以了,在settings的设置DEFAULT_REQUEST_HEADERS伪装自己是chrome浏览器,刚开始是可以的 ...

  10. Django--ORM 多表查询

    一 . 建立外键 一对一建立外键 外键名称 = models.OneToOneField(to='要连接的类名', to_field='字段') 一对多建立外键 外键名称 = models.Forei ...