#include <iostream> #include <string> #include <list> #include <algorithm>using namespace std; List<string> outputlist;void ergodic (string prefix, string str) {if (str== "") {//cout<<prefix<<endl ; outputlist.push_back (prefix);} else{for (int i=0;i<str.length (); i++) {ergodic (Prefix+str[i],str.substr (0,i) +str.substr (I+1,str.length ()));}}} int main (int argc, char *argv[]) {string str;list<string> inputlist;while (cin>>str,str!= "XXXXXX") { Inputlist.push_back (str);} while (cin>>str,str!= "XXXXXX") {bool Isunscramble=false;outputlist.clear (); Ergodic ("", str); Unique ( Outputlist.begin (), Outputlist.end ()),//sort (Outputlist.begin (), Outputlist.end (),less<string> ()); O Utputlist.sort (); for (List<string>::iterator Iter=outputlist.begin (); Iter!=outputlist.end (); ++iter) {if ( Find (Inputlist.begin (), Inputlist.end (), *iter)!=inputlist.end ()) {cout<<*iter<<endl;isunscramble= true;}} if (!isunscramble) {cout<< "not A VALID WORD" <<ENDL;} cout<< " "<<endl;} return 0;}
Copyright NOTICE: This article for Bo Master original article, without Bo Master permission not reproduced.
POJ-1318 (Topic use case passed, but system always hints WA)