#include<stdio.h>
#include<ctype.h>
#include<stdlib.h>
#include<string.h>
int count[1600];
int strignorecmp(const char a[],const char b[])
{
char c[80],d[80];
int i,j;
for(i=0;i<strlen(a);i++)
{
c[i]=tolower(a[i]);
}
for(i=0;i<strlen(b);i++)
{
d[i]=tolower(b[i]);
}
return strcmp(c,d);
}
int cmp_string(const void *_a,const void *_b)
{
char *a=(char *)_a;
char *b=(char *)_b;
return strignorecmp(a,b);
}
int cmp_realstring(const void *_a,const void *_b)
{
char *a=(char *)_a;
char *b=(char *)_b;
return strcmp(a,b);
}
int cmp_char(const void *_a,const void *_b)
{
char *a=(char *)_a;
char *b=(char *)_b;
return *a-*b;
}
int JudgeAnanagrams(char a[][80],int n,const char b[][80],char c[][80])
{
int i,j=0,k=0;
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
if(i!=j&&strcmp(a[i],a[j])==0)
{
count[i]++;
break;
}
}
}
for(i=0;i<n;i++)
{
if(count[i]==1)
{
for(j=0;j<n;j++)
{
if(i!=j&&strcmp(a[i],a[j])!=0)
{
strcpy(c[k],b[i]);
k++;
break;
}
}
}
}
return k;
}
int main()
{
freopen("156in.txt","r",stdin);
freopen("156out.txt","w",stdout);
char source[1600][80],low[1600][80],save[1600][80],c;
int i=0,j=0,k=0,sum,tag;
for(k=0;k<1600;k++)count[k]=1;
while((c=getchar())!='#')
{
if(isalpha(c))
{
source[i][j++]=c;
}
else if(c==' '||c=='\n')
{
i++;
j=0;
}
}
sum=i;
qsort(source,sum,sizeof(source[0]),cmp_string);
for(i=0;i<sum;i++)
{
for(j=0;j<strlen(source[i]);j++)
{
low[i][j]=tolower(source[i][j]);
}
}
for(k=0;k<sum;k++)qsort(low[k],strlen(low[k]),sizeof(char),cmp_char);
tag=JudgeAnanagrams(low,sum,source,save);
qsort(save,tag,sizeof(save[0]),cmp_realstring);
for(k=0;k<tag;k++)puts(save[k]);
return 0;
}
UVA - 156 - Ananagrams
最新推荐文章于 2021-04-05 18:20:39 发布
本文介绍了几种排序算法和字符串比较方法,包括冒泡排序、快速排序、选择排序、插入排序等,并详细阐述了如何实现字符串的忽略大小写比较。

466

被折叠的 条评论
为什么被折叠?



