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;
}