给出一个词典,找出所有的复合词,即恰好有两个单词连接而成的单词。输入每行都是一个由小写字母组成的单词。输入已按照字典序从小到大排序,且不超过120000个单词。输出所有复合词,按照字典序从小到大排列。
//其实输入到set里面的话,它会自动按字典顺序排序。 而且本代码不用按字典排序输入单词
#include <iostream>
#include <string>
#include <set>
#include <algorithm>using namespace std;int main(){set<string> dict;     //定义了一个里面装载string数据类型的set 名为dictint k = 0;string s;while(cin>>s && s[0] != '*'){dict.insert(s); //往集合里面添加元素k++;}/*set<string>::iterator it0;cout<<"All the input is: "<<endl;                     //利用iterator遍历for(it0 = dict.begin(); it0 != dict.end(); it0++){cout<<*it0<<endl;}*/cout<<"---------------output-----------------"<<endl;string s1, s2;set<string>::iterator it,itFind1,itFind2;for(it = dict.begin(); it != dict.end(); ++it){string ss = *it;//cout<<"------------ ss = "<<ss<<"-------------"<<endl;if(ss.length() == 1) continue;for(int j = 1; j < ss.length(); j++){s1 = ss.substr(0,j);s2 = ss.substr(j,ss.length());itFind1 = dict.find(s1);itFind2 = dict.find(s2);//cout<<"s1 = "<<s1<<"  and  s2 = "<<s2<<endl;if(itFind1 != dict.end() && itFind2 != dict.end())         //如果在 dict 这个 set 中找到了所拆分的字符串的话cout<<ss<<endl;//cout<<endl<<"-----------Got it : "<<ss<<"--------------------"<<endl;}}
return 0;
}

UVa10391 复合词相关推荐

  1. UVA10391复合词

    题意:      给定一个词典,然后问里面那些是复合词,复合词就是当前这个单词正好是有两个单词拼接而成. 思路:       用map来标记是否出现过,然后先按长短排序,把每个单体拆分成任意两个可能的 ...

  2. ACM Uva10391复合词

    题意如下 输入一系列由小写字母组成的单词.输入已按照字典序排序且不超过120000个.找出所有的复合词,即恰好由两个单词连接而成的单词. 下面展示C++程序 #include<set> # ...

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

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

  4. 算法竞赛入门经典(第2版)习题5-5 复合词 UVa10391

    用拆分词的思路很棒 #include <iostream> #include <cstdio> #include <cstdlib> #include <st ...

  5. 习题5-5 复合词 UVa10391

    1.题目描述:点击打开链接 2.解题思路:原来试了若干种思路,都失败了:1.枚举两个单词获得TLE(写了好几遍都是TLE==),2,从一个单词中拆分出一个已有单词查找剩余部分是否存在获得WA,最后决定 ...

  6. Uva10191 复合词

    题目描述: 给出一个按字母序排列的单词列表,找到其中存在的复合词.复合词的定义是由单词列表中其他的两个单词拼接而成.所有单词均为小写. 思路: 如果直接两层遍历所有的单词组合,看他们加在一起是否是单词 ...

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

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

  8. mysql重叠的词_举例说明叠音词,重叠式复合词,词的重叠,三者有何不同?

    叠音和重叠是重叠构词的两种方式. 叠音词是单纯词,由相同的不成语素的音节重叠而成,分为两种情况: 1.单个音节有音无义, 如:皑皑.猩猩 2.单个音节有音有义,但与重叠后构成的词的意义完全不同,也没有 ...

  9. 计算机英语是不是复合词,计算机英语专业词汇的构成.ppt

    计算机英语专业词汇的构成 * 计算机英语专业词汇的构成 专业词汇的构成 派生词 (derivation) 复合词 (compounding) 混成词 (blending) 前缀 缩略词 (shorte ...

最新文章

  1. IDEA调试SpringMvc项目时,出错:找不到ContextLoaderListener
  2. seata-golang 接入指南
  3. idea使用c3p0数据库连接池无法加载配置文件xml,配置文件放置的位置
  4. Java 获取汉字拼音的方法
  5. 泛微OA-测试机更改sysadmin密码为1
  6. 从高中缀学到身价过亿,这个80后值得喝彩!
  7. 电脑图片分类管理软件用什么工具,这一款便签工具可以管理图片
  8. python 绘制椭圆
  9. 使用Docker提交代码参加天池比赛流程
  10. 前端小白Day6-仿照百度制作登录界面
  11. linux账号延期,Linux用户密码过期延期
  12. Springboot 整合dubbo、zookeeper
  13. 产品经理原型篇——八大原则教你如何出赏心悦目的原型图
  14. laravel维护模式 MaintenanceMode
  15. 宝塔显示100%负载100%cpu解决办法
  16. Python KMeans聚类分析
  17. 中班音乐会跳舞的机器人_中班音乐教案:会跳舞的跳跳糖
  18. 通信算法之二十六:5G讲的这么简单明了
  19. 【条形码识别】基于matlab条形码识别【含Matlab源码 403期】
  20. jenkins系列:获取jenkins 指定job最新结果并解析日志,整合成测试报告并发送邮件

热门文章

  1. AskBot可以帮助零售门店员工做什么?
  2. 基于hyperledger联盟链的汽车轨迹追溯系统 (三)
  3. abaqus运行报错 WindowsError:[Error 2]
  4. Android:设计一个在屏幕上移动的小球程序
  5. 计算机虚拟化分类(虚拟机相关)的简单整理
  6. 实验:温湿度数据oled显示
  7. 四大法宝祝你面试成功
  8. Guitar Pro8.0.1最新中文版本吉他谱下载及使用教程
  9. 万能pdf转换器 V4.1
  10. 柔性管理法则与柔性管理案例