10391 - Compound Words(stl map)

2014-11-24 11:29:04 · 作者: · 浏览: 7

题目:10391 - Compound Words

题目大意:找出有里面出现过的两个单词组成的符合串找出来,按字典序打印。

解题思路:把出现过的单词用map记录下来,然后把每个单词都分两半来考虑是否出现过,两半可以长短不一。

注意:审题要仔细,这题当初就是漏了符合串是由两个单词组成的。

#include
  
   
#include
   
     #include
     #include
     
       #include
      
        using namespace std; const int N = 120005; const int M = 100; map
       
         s; char str[N][M]; int main () { int n = 0, flag; while (gets(str[n]) != NULL) { s[str[n++]] = 1; } for (int i = 0; i < n; i++) { for (int j = 1; j < strlen(str[i]); j++) { char str1[M], str2[M]; strcpy(str1, str[i]); str1[j] = '\0'; strcpy(str2, str[i] + j); // printf("%s\n", str2); if (s[str1] + s[str2] == 2){ printf("%s\n", str[i]); flag = 1; break; } } } return 0; }