首页 > 代码库 > UVA 10391(把符合单词输出,map)
UVA 10391(把符合单词输出,map)
Compound Words
Time Limit: 3000ms Memory Limit: 131072KB
[PDF Link]
Problem E: Compound Words
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.
Input
Standard input consists of a number of lowercase words, one per line, in alphabetical order. There will be no more than 120,000 words.
Output
Your output should contain all the compound words, one per line, in alphabetical order.
Sample Input
a alien born less lien never nevertheless new newborn the zebra
Sample Output
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 10391(把符合单词输出,map)
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。