标签:uva
You are to find all the two-word compound words in a dictionary. A two-word compound word is a word in the dictionary that is the concatenation of exactly two other words in the dictionary.
Standard input consists of a number of lowercase words, one per line, in alphabetical order. There will be no more than 120,000 words.
Your output should contain all the compound words, one per line, in alphabetical order.
a alien born less lien never nevertheless new newborn the zebra
alien newborn
题目大意:
给你一些字典里面的词语,输出有其中两个单词可以复合的复合单词。
解题思路:
输入时已经是字典序,输出不用再排顺序。
代码:
#include<iostream> #include<cstdio> #include<string> #include<map> using namespace std; const int maxn = 120010; string str[maxn],str1,str2; map <string,int> mymap; int r = 0; void input(){ while(cin>>str[r++]){ mymap[str[r-1]]=2;//也可以为别的数 } } void solve(){ for(int i=0;i<r;i++){ str1.clear(); str2.clear(); for(int j=0;j<str[i].length();j++){ str1+=str[i][j]; if(mymap[str1]==2){ str2=&str[i][j+1]; if(mymap[str2]==2){ cout<<str[i]<<endl; break; } } } } } int main(){ input(); solve(); return 0; }
标签:uva
原文地址:http://blog.csdn.net/hush_lei/article/details/41910973