uva 156

/*一次ac,得益于函数的调用*/

#include<stdio.h>
#include<stdlib.h>
#include<ctype.h>
#include<string.h>
char word[300][25],sorted[300][25],s1[25],s2[25];
int found[300];
int cmp_str(const void *a,const void *b)
{
 return strcmp((char *)a,(char *)b);
}
int cmp_char(const void *a,const void *b)
{
 return *((char*)a)-*((char*)b);
}
int main()
{
    int i,j,n=0;
    while(scanf("%s",word[n++])!=EOF&&word[n-1][0]!='#');
    n--;
    qsort(word,n,sizeof(word[0]),cmp_str);
    for(i=0;i<n;i++)
    {
  strcpy(sorted[i],word[i]);
  for(j=0;word[i][j]!='\0';j++)
   if(isupper(sorted[i][j]))
    sorted[i][j]=tolower(sorted[i][j]);
    }
 memset(found,0,sizeof(int)*n);
 for(i=0;i<n;i++)
 {
  if(found[i]==0)
  {
     sprintf(s1,"%s",sorted[i]);
     qsort(s1,strlen(s1),sizeof(char),cmp_char);
     for(j=0;j<n;j++)
     {
      sprintf(s2,"%s",sorted[j]);
               qsort(s2,strlen(s2),sizeof(char),cmp_char);
      if(i!=j&&strcmp(s1,s2)==0)
      {
      found[i]=1;
      found[j]=1;
      }
     }
     if(found[i]==0)
       printf("%s\n",word[i]);
  }
 }
    return 0;
}

你可能感兴趣的:(uva)