UVA 10391
来源:互联网 发布:域名交易 知乎 编辑:程序博客网 时间:2024/05/21 17:38
题意:给出一个按字典序排好的词典,按照字典序顺序输出所有的复合词。复合词就是指这个单词是由给出词典的两个单词连接合成的。N<=12W。
思路:首先我们把所有的单词都丢进map里,然后按照输入顺序判断每个单词是否是复合词。判断方法是枚举这个单词断开的位置,分成两个单词,然后在map检查一下这两个单词是否出现过。
#include <cstdio>#include <cmath>#include <cstring>#include <string>#include <cstdlib>#include <iostream>#include <algorithm>#include <stack>#include <map>#include <set>#include <vector>#include <sstream>#include <queue>#include <utility>using namespace std;#define rep(i,j,k) for (int i=j;i<=k;i++)#define Rrep(i,j,k) for (int i=j;i>=k;i--)map<string,int> flag;string str[120009],temp;int n = 0;bool check(string t){ string tx,ty; int len = t.length(); rep(i,1,len-1) { tx = string( &t[0],&t[i] ); ty = string( &t[i],&t[len] ); if ( flag[tx] && flag[ty] ) return true; } return false;}int main(){ flag.clear(); while(cin>>temp) { str[++n] = temp; flag[temp] = 1; } rep(i,1,n) if ( check(str[i]) ) cout<<str[i]<<endl; return 0;}
0 0
- uva 10391
- UVA 10391
- uva 10391
- uva 10391
- UVA 10391
- Uva 10391
- uva 10391 compound words
- UVa 10391 - Compound Words
- uva 10391 - Compound Words
- uva 10391 - Compound Words
- UVa 10391 - Compound Words
- UVa 10391 - Compound Words
- uva 10391 - Compound Words
- UVA 10391 Compound Words
- UVA 10391 - Compound Words
- Uva-10391-Compound Words
- UVa 10391 - Compound Words
- Uva 10391 复合词
- JVM类的加载过程
- UVA 10763
- ListView中getView的原理+如何在ListView中放置多个item
- opencv 膨胀(dilate)与腐蚀(erode)---基本 数学形态学
- 1017. Queueing at Bank (25)
- UVA 10391
- bzoj1211: [HNOI2004]树的计数
- UVA 1595
- UVA 12100
- 这只是第一篇日志,以后每天都会更新
- UVA 230
- 关于尺寸单位
- UVA 1596
- 169. Majority Element