uva 10391 Compound Words

来源:互联网 发布:秦素妍捏脸数据 编辑:程序博客网 时间:2024/05/22 07:09

题目:Compound Words


题意:给定一个词典,找出所有刚好由2个单词组成的单词,按字典序输出。


思路:由于单词数量为120000,所以二重循环将单词两两拼在一起是不可能的。而一个单词长度很短,远远达不到120000,所以可以考虑将一个单词拆成两个单词。


代码:

#include<cstdio>#include<iostream>#include<string>#include<vector>#include<set>#include<map>#include<algorithm>#include<cmath>using namespace std;int main() {string x;set<string> dic;while(cin>>x) dic.insert(x);for(set<string>::iterator it=dic.begin();it!=dic.end();it++){x=*it;string a,b;for(int i=1;i<x.size();i++){a=x.substr(0,i);b=x.substr(i,x.size()-i);if(dic.find(a)!=dic.end()&&dic.find(b)!=dic.end()){cout<<x<<endl;break;}}}return 0;}


原创粉丝点击