大意:按照字典序输入一个词典,输出其中所有的复合词。复合词是指可以由字典中任意两个不同的单词组合而成的词,比如new+born=newborn
如果每个词都和另外的词生成一个新词,然后查询,这种算法是O(n^2)的,因为n<120000,所以显然会超时。
如果将每个词拆分,然后和词典中的词匹配,此时复杂度是O(m*n),m是指单词的长度。显然单词长度不会很大,所以该复杂度可以接受。
std::map
#include <iostream>
#include <string>
#include <map>
using namespace std;
int main()
{
map<string,bool>hash;
string str[150000];
hash.clear();
string temp;
string a,b;
int num=0;
while(cin>>str[num])
{
hash[str[num]]=true;
num+&#