方法一 STL string
#include<iostream>
#include<string>
#include<cstring>
#include<algorithm>
#include<map>
using namespace std;
map<string,string> dic;
int main()
{
string ss;
string gg;
while(cin>>ss && ss!="XXXXXX")
{
gg=ss;
sort(gg.begin(),gg.end());
dic.insert(pair<string,string>(ss,gg));
}
string mm;
while(cin>>mm && mm!="XXXXXX")
{
sort(mm.begin(),mm.end());
map<string,string>::iterator it;
int ok=0;
for(it=dic.begin();it!=dic.end();it++)
{
if(it->second==mm)
{
ok=1;
cout<<it->first<<endl;
}
}
if(!ok)
{
cout<<"NOT A VALID WORD"<<endl;
}
cout<<"******"<<endl;
}
return 0;
}
方法c
#include<iostream>
#include<string.h>
#include<algorithm>
using namespace std;
char dic[105][15];
char x_dic[105][15];
char cin_dic[105][15];
struct Num{
char xx[15];
}num[105];
bool cmp2(char * aa,char * bb)
{
if(strcmp(aa,bb)==-1)
return 1;
else return 0;
}
bool cmpp(Num a,Num b)
{
return strcmp(a.xx,b.xx)<0?1:0;
}
int main()
{
int k=0;
while(scanf("%s",dic[k])==1 && strcmp(dic[k],"XXXXXX")!=0)
{
strcpy(x_dic[k],dic[k]);
sort(x_dic[k],x_dic[k]+strlen(x_dic[k]));
k++;
}
int m=0;
while(scanf("%s",cin_dic[m])==1 && strcmp(cin_dic[m],"XXXXXX")!=0)
{
sort(cin_dic[m],cin_dic[m]+strlen(cin_dic[m]));
int t=0;
for(int i=0;i<k;i++)
{
if(strcmp(cin_dic[m],x_dic[i])==0)
{
strcpy(num[t++].xx,dic[i]);
}
}
if(t==0)
{
printf("NOT A VALID WORD\n");
}else if(t==1){
printf("%s\n",num[0].xx);
}else {
sort(num,num+t,cmpp);
for(int j=0;j<t;j++)
{
printf("%s\n",num[j].xx);
}
}
printf("******\n");
m++;
}
return 0;
}