UVa10391 复合词
来源:互联网 发布:勇者之塔数据大全 编辑:程序博客网 时间:2024/05/16 14:17
给出一个词典,找出所有的复合词,即恰好有两个单词连接而成的单词。输入每行都是一个由小写字母组成的单词。输入已按照字典序从小到大排序,且不超过120000个单词。输出所有复合词,按照字典序从小到大排列。
//其实输入到set里面的话,它会自动按字典顺序排序。 而且本代码不用按字典排序输入单词
#include <iostream>#include <string>#include <set>#include <algorithm>using namespace std;int main(){ set<string> dict; //定义了一个里面装载string数据类型的set 名为dict int 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;}
0 0
- UVA10391复合词
- UVa10391 复合词
- UVA10391-复合词
- UVA10391:Compound Words(复合词)
- 习题5-5 复合词 UVa10391
- 算法竞赛入门经典 习题5-5 复合词 UVa10391
- 复合词
- 算法竞赛入门经典 第二版 习题5-5 复合词 Compound Words uva10391
- 算法竞赛入门经典(第2版)习题5-5 复合词 UVa10391
- UVA10391
- UVa10391
- UVA10391
- uva10391
- UVa10391
- uva10391
- uva10391
- uva10391
- UVa10391
- 开源框架:Alcatraz
- (最小费用最大流)The Exchange of Items (141 - ZOJ Monthly, July 2015 - E )
- HDOJ1978 How many ways【dp or 记忆化搜索】
- 仰视源码,实现memmove
- Java制作证书的工具keytool用法总结
- UVa10391 复合词
- 关于新项目部署的若干问题
- oracle坏块及解决办法
- HDU 2037:今年暑假不AC
- 重学java23种设计模式(9)装饰者模式
- GET和POST的区别
- NYOJ 757 期末考试(优先队列)
- ios D-U-N-S Number(邓白氏编码)申请
- JavaScript学习总结