UVa10391 - Compound Words

来源:互联网 发布:章鱼软件 编辑:程序博客网 时间:2024/05/16 01:53

基本思路:把每个单词拆开成两个单词,长度可以不同,判断这两个单词是否在s(set<string>类型)中出现过,如果没有,继续拆解本单词,直到有拆解方案合适或者所有拆解方案都判断完。

1、熟悉set的使用。

2、利用string类型的各种使用。

//#define LOCAL#include<iostream>#include<array>#include<queue>#include<set>#include<vector>#include<map>#include<string>#include<cmath>#include<ctime>#include<algorithm>using namespace std; set<string> s;int main(){#ifdef LOCALfreopen("in.txt", "r", stdin);freopen("out.txt", "w", stdout);#endifstring buf;while (cin >> buf){s.insert(buf);}set<string>::iterator it;for (it = s.begin(); it != s.end();it++){for (int j = 1; j < (*it).length(); j++){string s1, s2;//把*t拆解成s1,s2s2=s1 = *it;s1.erase(j, s1.length());s2.erase(0,j);//cout << s1 << " " << s2 << "\n";if (s.count(s1)&&s.count(s2)){cout << *it << "\n";break;}}}//printf("Time used=%.3f\n", (double)clock() / CLOCKS_PER_SEC);return 0;}


0 0