顺利的1a,可以去吃饭~\(≧▽≦)/~啦啦啦
/* zoj_1181 字符串处理 简单题 题意:输出重新组合给出的字母可以的得到的单词。 方法:给每个单词一个序列号喽。序列号的形式是26位的字符串。第i位代表i+'a'出现的次数。 匹配序列号即可。 */ #include <iostream> #include <cstdio> #include <string> #include <algorithm> using namespace std; string word[110]; string s[110]; void inint( int maxi ) { int i,j; for( i=0;i<maxi;i++ ) { s[i]=""; for( j=0;j<26;j++ ) s[i]+='0'; } } string change( string t ) { int i,j; string tt=""; for( j=0;j<26;j++ ) tt+='0'; for( i=0;i<t.size();i++ ) { tt[ t[i]-'a' ]++; } return tt; } int main() { string t; int i,j,maxi; bool nothing; i=0; while( cin>>t && t!="XXXXXX" ) { word[i++]=t; } maxi=i; inint( maxi ); sort( word,word+maxi ); for( i=0;i<maxi;i++ ) { for( j=0;j<word[i].size();j++ ) { s[i][ word[i][j]-'a' ]++; } } while( cin>>t && t!="XXXXXX" ) { t=change( t ); nothing=true; for( i=0;i<maxi;i++ ) { if( t==s[i] ) { cout<<word[i]<<endl; nothing=false; } } if( nothing ) cout<<"NOT A VALID WORD\n"; cout<<"******\n"; } return 0; }