http://acm.hdu.edu.cn/showproblem.php?pid=2072
Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
Problem Description
lily的好朋友xiaoou333最近很空,他想了一件没有什么意义的事情,就是统计一篇文章里不同单词的总数。下面你的任务是帮助xiaoou333解决这个问题。
Input
有多组数据,每组一行,每组就是一篇小文章。每篇小文章都是由小写字母和空格组成,没有标点符号,遇到#时表示输入结束。
Output
每组只输出一个整数,其单独成行,该整数代表一篇文章里不同单词的总数。
Sample Input
you are my friend
#
Sample Output
4
Problem solving report:
Description: 计算不同单词的总数。
Problem solving: 先将文章存入字符串中,然后按顺序分离出每个单词,判断单词是否存入过(即是否出现过),如果没存入就存下来。最终输出存入的单词数。
#include <stdio.h>
#include <string.h>
int main()
{
int len, p, i, j, flag;
char s[110000], a[1100][110], b[110];
while (gets(s) && s[0] != '#')
{
j = p = 0;
memset(b, 0, sizeof(b));
len = strlen(s);
while (p < len)
{
sscanf(s + p, "%s", b);
for (i = 0; i < j; i++)
if (!strcmp(a[i], b))
break;
if (i == j)
strcpy(a[j++], b);
for (i = p; s[i] == ' '; i++)
p++;
p += strlen(b) + 1;
}
if (!strlen(b))
printf("0\n");
else printf("%d\n", j);
}
return 0;
}