这道题稀里糊涂弄了一晚上,提交了好多次,最后终于ac了。。 总结::心细心细再心细,第一次输代码是就一定要想全面,不然会浪费大量时间调试,而且对耐心也有很大的挑战
总结易错点:
1、数组一开始开小了 开始 #define N 5000 R 200,这样太小了,因为题中说了,单词书要有5000个,而文章中单词可有重复的,故a【】要开的尽量大。 不然提示Runtime error
2、出现 Time limit exceeded ,一开始输出时采用的语句是每次输出时和前面所有的比较,后来反思一下不用的,因为已经排好序,只需要比较相邻的
3、注意 qsort(a,n+1,sizeof(a[0]),cmp_string); 中的 n+1
代码:
#include <stdio.h>
#include <string.h>
#include <ctype.h>
#include <stdlib.h>
#define L 100020
#define R 250
char a[L][R];
int cmp_string(const void *_a,const void*_b)
{
char *a=(char*)_a;
char *b=(char*)_b;
return strcmp(a,b);
}
int main()
{
// freopen("abc.txt","r",stdin);
char c;
int i=0;
int j=0;
int ok=0;
while (( c=getchar() ) !=EOF)
{
if(isalpha(c) && c !='\n')
{
ok=1;
a[i][j++]=tolower(c);
a[i][j]='\0';
}
else if(ok)
{
i++; j=0; ok=0;
}
}
if(ok==0) i--;
int n=i;
qsort(a,n+1,sizeof(a[0]),cmp_string);
for(i=0;i<=n;i++)
if(strcmp(a[i],a[i+1]) != 0) puts(a[i]);
return 0;
}