今天下午略感无聊啊,切点水题打发打发时间,=_=||
把所有字符串插入到一个set中去,然后对于每个字符串S,枚举所有可能的拆分组合S = A + B,看看A和B是否都在set中,是的话说明S就是一个复合词。
#include <iostream>
#include <algorithm>
#include <cstdio>
#include <cstring>
#include <string>
#include <set>
#include <vector>
using namespace std; set<string> dic;
vector<string> ans;
set<string>::iterator it; int main()
{
//freopen("in.txt", "r", stdin); string s;
while(cin >> s) dic.insert(s);
for(it = dic.begin(); it != dic.end(); it++)
{
s = *it; int l = s.length();
for(int i = ; i < l; i++)
{
string s1 = s.substr(, i);
string s2 = s.substr(i, l - i);
if(dic.count(s1) && dic.count(s2))
{
ans.push_back(s);
break;
}
}
} sort(ans.begin(), ans.end());
for(int i = ; i < ans.size(); i++) cout << ans[i] << endl; return ;
}
代码君