数据量小,直接排序比较
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
struct string
{
char ch[200];
char sh[200];
}s[110];
int amp(const void *a,const void *b)
{
struct string *c,*d;
c=(struct string *)a;
d=(struct string *)b;
return strcmp(c->sh,d->sh);
}
int cmp(const void *a,const void *b)
{
return *(char *)a-*(char *)b;
}
int main()
{
int i=0,j,flag;
char str[200],chr[]={"XXXXXX"};
while(scanf("%s",s[i].ch),strcmp(s[i].ch,chr)!=0)
{
strcpy(s[i].sh,s[i].ch);
qsort(s[i].ch,strlen(s[i].ch),sizeof(s[i].ch[0]),cmp);
i++;
}
qsort(s,i,sizeof(s[0]),amp);
while(scanf("%s",&str),strcmp(str,chr)!=0)
{
flag=0;
qsort(str,strlen(str),sizeof(str[0]),cmp);
for(j=0;j<i;j++)
{
if(strcmp(s[j].ch,str)==0)
{puts(s[j].sh);flag=1;}
}
if(flag==0)
puts("NOT A VALID WORD");
puts("******");
}
return 0;
}