156 - Ananagrams
注意一个字母的情况
#include<string.h>
#include<stdio.h>
#include<stdlib.h>
int cmp_char(const void* _a,const void* _b)
{
char* a= (char*)_a;
char* b= (char*)_b;
return *a - *b;
}
int cmp_string(const void* _a,const void* _b)
{
char* a= (char*)_a;
char* b= (char*)_b;
return strcmp(a,b);
}
int main()
{
freopen("1.txt","r",stdin);
int i=0,j,k,place;
char word[1001][21],sorted[1001][21],line[21];
while(scanf("%s",line)&&line[0]!='#')
{
strcpy(word[i],line);
for(j=0;j<strlen(line);j++)
if(line[j]>='A'&&line[j]<='Z')line[j]+=32;
strcpy(sorted[i],line);
i++;
}
for(j=0;j<i;j++)
qsort(sorted[j],strlen(sorted[j]),sizeof(char),cmp_char);
for(j=0;j<i;j++)
{
place=0;
for(k=j+1;k<i;k++)
if(strcmp(sorted[j],sorted[k])==0)
{word[k][0]='0';place=1;}
if(place)
word[j][0]='0';
}
qsort(word,i,21,cmp_string);
for(j=0;j<i;j++)
if(word[j][0]!='0')
printf("%s/n",word[j]);
return 0;
}