HDUOJ-------单词数

单词数

Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 21651    Accepted Submission(s): 5228


Problem Description
lily的好朋友xiaoou333最近很空,他想了一件没有什么意义的事情,就是统计一篇文章里不同单词的总数。下面你的任务是帮助xiaoou333解决这个问题。
 

 

Input
有多组数据,每组一行,每组就是一篇小文章。每篇小文章都是由小写字母和空格组成,没有标点符号,遇到#时表示输入结束。
 

 

Output
每组只输出一个整数,其单独成行,该整数代表一篇文章里不同单词的总数。
 

 

Sample Input
you are my friend
 
#
 

 

Sample Output
4
 

 

Author
Lily
 

 

Source
 

 

Recommend
 
思路: 先设置一个字符型数组来存储字符,然后逐一将每一个单词存到二维数组中。接着排序,然后统计不同即可!!
     刚开始数组开小了,runtime error很多次!!最后改到很大才过了,比较的那个....
                          估计用c++会好很多.....
 1 #include<stdio.h>

 2 #include<string.h>

 3 #include<stdlib.h>

 4 #define maxn 10001

 5 char paper[maxn][100]={'\0'};

 6 char str[maxn]={'\0'};

 7 int cmp(const void *a,const void *b)

 8 {

 9     return strcmp((char *)a,(char *)b);

10 }

11 int main()

12 {

13 

14     int i,count,k;

15     bool flag;

16     while(gets(str),*str!='#')

17     {

18         flag=true;

19         count=-1;

20         memset(paper,'\0',sizeof(paper));

21         for( i=0 ; str[i]!='\0' ; i++ )

22         {

23             if(flag&&str[i]!=' ')

24             {

25                 flag=false;

26                 count++;

27                 k=0;

28             }

29             else 

30              if(flag==false&&str[i]==' ')

31             {

32                 flag=true;

33                 continue;

34             }

35          if(str[i]!=' ')

36          {

37              paper[count][k++]=str[i];

38          }

39          

40         }

41         memset(str,'\0',sizeof(str));

42         //for(i=0;i<=count;i++)

43          //puts(paper[i]);

44     if(count>0)

45         qsort(paper,count+1,100*sizeof(char),cmp);

46     /*    for(i=0;i<=count;i++)

47             puts(paper[i]);

48     */

49         int sum=1;

50         for(i=1;i<=count;i++)

51         {

52             if(strcmp(paper[i-1],paper[i])!=0)

53                 sum++;

54         }

55         if(count==-1)sum=0;

56         printf("%d\n",sum);

57 

58     }

59     return 0;

60 }
View Code

 

 

你可能感兴趣的:(HDU)