Problem Description
lily的好朋友xiaoou333最近很空,他想了一件没有什么意义的事情,就是统计一篇文章里不同单词的总数。下面你的任务是帮助xiaoou333解决这个问题。
Input
有多组数据,每组一行,每组就是一篇小文章。每篇小文章都是由小写字母和空格组成,没有标点符号,遇到#时表示输入结束。
Output
每组只输出一个整数,其单独成行,该整数代表一篇文章里不同单词的总数。
Sample Input
you are my friend
#
Sample Output
4
先上个代码吧。马上断网了。
#include <stdio.h>
#include <string.h>
int main()
{
char s[1000][1000];
char a[1000];
int i,l,j,k,sum,p,wbx;
while(gets(a) &&a[0]!='#')
{
memset(s,'\0',sizeof(s));
//初始化 l=strlen(a);
k=p=sum=0;
int sum1=0;
for(i=0;i<l;i++)
{
if(a[i]==' ')
{
if(a[i+1]==' ')
continue;
else if(a[i+1]=='\0')
break;
else
{
p=0;
k++;
}
}
else
{
s[k][p]=a[i];
p++;
sum1=1;
}
//这里的算法主要是将单词存到二维字符数组上。 }
for(i=0;i<k;i++)
{
wbx=1;
for(j=i+1;j<=k;j++)
{
if(strcmp(s[i],s[j])==0)
{
wbx=0;
break;
}
}
if(wbx)
sum++;
//这里主要是去掉相同的单词,不同的就加一个。 }
printf("%d\n",sum1?sum+1:sum);
//sum1如果等于1的话,就加一个,因为第一个单词没算进去。否则的话一个单词也没有,直接是0(此时sum=0) }
return 0;
}