uva 10391 - Compound Words

简介:

 

      判断一个单词是不是组合词,题目中说是不同的单词,但是如果加不同判断就会WA……所以直接无视就好了

 

     一共最多有120000的单词,这种题有两个思路,1是合成词,2是拆分词。

 

     合成词的复杂度是n^2果断超时

     拆分词是n*m(m为平均长度),因为m未知,所以抱着试一试的想法,用map水了一下,就过了,120ms,可见m的长度并不大

 

/*
author:jxy
lang:C/C++
university:China,Xidian University
**If you need to reprint,please indicate the source**
*/
#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <string>
#include <map>
#define INF 1E9
using namespace std;
map<string,bool> hash;
string s[150000];
int main()
{
    int i,j;
    int cnt=0;
    hash.clear();
    while(cin>>s[cnt])
    {
        hash[s[cnt]]=1;
        cnt++;
    }
    string a,b;
    for(i=0;i<cnt;i++)
     for(j=0;j<s[i].size()-1;j++)
     {
        a=s[i].substr(0,j+1);
        if(!hash[a])continue;
        b=s[i].substr(j+1);
        if(!hash[b])continue;
        cout<<s[i]<<endl;
        break;
     }
     return 0;
}


 

目录
相关文章
|
10月前
UVa11565 - Simple Equations
UVa11565 - Simple Equations
39 0
|
10月前
UVa11714 - Blind Sorting
UVa11714 - Blind Sorting
39 0
|
算法 Python
LeetCode 1160. 拼写单词 Find Words That Can Be Formed by Characters
LeetCode 1160. 拼写单词 Find Words That Can Be Formed by Characters
LeetCode 1160. 拼写单词 Find Words That Can Be Formed by Characters