题目链接:http://acm.pku.edu.cn/JudgeOnline/problem?id=1318

  1. #include <set> 
  2. #include <iostream> 
  3. #include <string> 
  4. #include <algorithm> 
  5. using namespace std;  
  6.  
  7. int main()  
  8. {  
  9.     set<string> dict;  
  10.     string word;  
  11.     char ch[10];  
  12.     while (true)  
  13.     {  
  14.         gets(ch);  
  15.         if( strcmp(ch, "XXXXXX") == 0) break;  
  16.         dict.insert(ch);  
  17.     }  
  18.     while (true)  
  19.     {  
  20.         gets(ch);  
  21.         if( strcmp(ch, "XXXXXX") == 0) break;  
  22.         int count=0;  
  23.         word = ch;  
  24.         sort( word.begin(), word.end());  
  25.         do   
  26.         {  
  27.             if( dict.find(word) != dict.end() )   
  28.             {  
  29.                 cout << word.c_str() <<endl;     
  30.                 count++;  
  31.             }  
  32.         }while( next_permutation( word.begin(), word.end() ));  
  33.         if( count == 0)  
  34.         {  
  35.             cout << "NOT A VALID WORD" << endl;  
  36.         }  
  37.         cout << "******" << endl;  
  38.     }  
  39.     return 0;