一开始记录了空字符串并输出了,,所以WA了好几次。
后来把代码优化了一下,从700+ms优化到了162ms。
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int cmp(const void *a,const void *b)
{
return strcmp((char*)a,(char*)b);
}
char a[1000],temp[1005];;
char ans[5005][205];
int main()
{
int i,num=0;
while(gets(a))
{
int n=strlen(a);
int j=0,k,found;
for(i=0;i<n;i++)
{
if(a[i]>='A'&&a[i]<='Z')
a[i]+='a'-'A';
if(!(a[i]>='a'&&a[i]<='z'))
{
temp[j]='\0'; j=0;
found=0;
for(k=0;k<num;k++)
{
if(strcmp(temp,ans[k])==0)
{ found=1; break; }
}
if(!found)
strcpy(ans[num++],temp);
}
else
{
temp[j++]=a[i];
if(i==n-1){
temp[j]='\0'; j=0;
found=0;
for(k=0;k<num;k++)
{
if(strcmp(temp,ans[k])==0)
found=1;
}
if(!found)
strcpy(ans[num++],temp);
}
}
}
}
qsort(ans,num,sizeof(ans[0]),cmp);
for(i=1;i<num;i++)
printf("%s\n",ans[i]);
return 0;
}