给出一个词典,找出所有的复合词,即恰好有两个单词连接而成的单词。输入每行都是
一个由小写字母组成的单词。输入已按照字典序从小到大排序,且不超过120000个单词。输
出所有复合词,按照字典序从小到大排列。

题目很好 理解 用好久没字典树了,写了很多坑

要注意:

自己和自己也可以组成一个

比如 a aa aa是可以输出的

#pragma GCC optimize(2)
#include <bits/stdc++.h>
using namespace std;#define S s[i] - 'a'
#define mem(a,b) memset(a,b,sizeof(a))
const int maxd = 120005;
struct node
{bool is_word;node *next[26];node():is_word(false) {for(int i = 0;i<26;i++){this->next[i] = NULL;}}
};
void ins(node *Root,char *s)
{node *p = Root;int i = 0;for(;s[i];i++){if(p->next[S] == NULL){p->next[S] = new node();}p = p->next[S];//   printf("%c",s[i]);}p->is_word = true;//  printf("\n");
}
bool find_is(node *Root ,char *s)
{node *p = Root;int i,top=0;stack<int>v;for(int i = 0;s[i]!='\0';i++){if(p->is_word)v.push(i);p = p->next[S];}while(!v.empty()){int i = v.top();p = Root;v.pop();for(;s[i]!='\0'&&p;i++){p = p->next[S];}if(s[i] == '\0'&&p&&p->is_word)return true;}return false;
}char word[maxd][30];
int main(void)
{
//  freopen("input.in","r",stdin);
//  freopen("output.out","w",stdout);node *root = new node();register int cnt = 0;while(scanf("%s",word[cnt])!=EOF)ins(root,word[cnt++]);for(int i  = 0;i<cnt;i++){if(find_is(root,word[i])){puts(word[i]);}}
}

vj上偷的最短AC代码 开o2优化应该也是 0ms 0k

复合词(Compound Words, UVa 10391)相关推荐

  1. 15行代码AC——习题5-5 复合词(Compound Words, UVa 10391)——解题报告

    励志用少的代码做高效的表达 题目(提交)链接→UVA-10391 本题实质是#include<string>头文件的substr()字符串分割函数与#include<algorith ...

  2. Compound Words UVA - 10391(c++用法中substr函数用法+map实现)

    题意: 给出字典中一堆单词,单词的输入方式是以字典序输入的.问:在这一堆单词中,有那些单词是通过其它两个单词组合而来的.按字典序升序输出这些单词. 题目: You are to find all th ...

  3. UVa 10391 Compound Words(复合词)

    题意  输出所有输入单词中可以由另两个单词的组成的词 STL set的应用  枚举每个单词的所有可能拆分情况  看拆开的两个单词是否都存在  都存在的就可以输出了 #include <bits/ ...

  4. uva 10391 Compound Words

    哈希 题意简短:单case,输入一列单词即一个字典,已经按字典序排好输入,上限为120000,然后要你找一些单词,这种单词可以分为两部分,两部分都是字典里面的单词,按字典序输出这种单词 很裸的哈希,对 ...

  5. UVA 10391 - Compound Words

    链结:戳我. TLE...看来是Hash Table做的不够好. View Code 1 /* 2 Author: frankdj 3 State: TLE 4 */ 5 #include <i ...

  6. 算法竞赛入门经典 第二版 习题5-5 复合词 Compound Words uva10391

    题目:https://vjudge.net/problem/UVA-10391 思路:用vector存下单词,因为单词已按字典序排列于是复合词前半个单词一定在这个复合词之前,于是遍历寻找在首字母更变之 ...

  7. 复合词 (Compound Words)(集合+字符函数)

    题目描述 给出一个词典,找出所有的复合词,即恰好有两个单词连接而成的单词.输入每行都是一个小写字母组成的单词.输入已按照字典序从小到大排序,且不超过120000个单词.输出所有复合词,按照字典序从小到 ...

  8. UVA 10391 STL容器的使用

    这道题目,我是用了2个set(s1,s2)容器,s1用来盛放所有的字符串,然后遍历s1,把每个字符串拆成2部分,再判断s1里是否均含有这2部分,如果有就加入到s2容器里,因为它要求按照字典序输出,se ...

  9. python redis 性能测试台_Redis性能测试

    Redis 性能测试 Redis 性能测试是通过同时执行多个命令实现的.Redis性能测试主要是通过src文件夹下的redis-benchmark来实现(Linux系统下) 语法 redis 性能测试 ...

最新文章

  1. mvc-3模型和数据(1)
  2. Codeforces Round #547 (Div. 3) D
  3. pyltp在ubuntu20.04下面的安装办法
  4. mysqli 启动出错
  5. hbase简介(大数据技术)
  6. 分数的拆分原理和方法_常见的节税原理你知道吗?
  7. Mysql学习总结(65)——项目实战中常用SQL实践总结
  8. 个人项目总结----By Li Zhang
  9. ubuntu mysql 编译_Ubuntu下mysql编译安装
  10. 2017年美国大学生数学建模竞赛E题O奖65123论文解读
  11. ubuntn 常用命令和快捷键汇总
  12. GrapeCity Documents for PDF[GcPDF]
  13. Java百度网盘上传图片(文件)
  14. 夏天一直流汗,做近视矫正手术会有影响吗?
  15. 商业智慧——三国职场人
  16. 怎么在Windows电脑更新 DirectX ?
  17. 大数据技术之_16_Scala学习_13_Scala语言的数据结构和算法_Scala学习之旅收官之作
  18. 使用react开发dapp应用实战-宠物认领
  19. 【✨十五天搞定电工基础】一阶电路的暂态分析
  20. 鼠标点一下就行 玩转CPU软件超频

热门文章

  1. 不会这4个Excel技巧,怎么敢说自己精通表格软件?
  2. 青花瓷图片的爬取和resize
  3. 【ACWing】914. 樱桃网
  4. C语言入门小游戏——猜数字游戏(详解)
  5. 币安 PUBLIC API 示例
  6. 人力资源管理系统哪个好?如何选择
  7. 【愚公系列】2023年06月 网络安全(交通银行杯)-我这密码忘了。。
  8. Android图像处理之色彩特效处理
  9. MySQL5.7 设置密码策略(等保三级密码改造)
  10. 如何解决蓝屏代码0x000007B问题