HDU2072

单词数
Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 11019    Accepted Submission(s): 2802


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


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


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


Sample Input
you are my friend
#


Sample Output
4

#include <stdio.h>
#include <string.h>
#include <stdlib.h>

#define _N 10000

char a[_N];
char b[_N][100];
int cmp(const void *a, const void *b)
{
	return strcmp((char *)a, (char *)b);
}
//思路:对输入的字符串进行分割为单词,然后排序,最后进行统计
int main()
{
	int i, len, cnt, k, l;
	while(gets(a))
	{
		if(!strcmp(a, "#"))
			break;
		len = strlen(a);
		l = k = 0;
		for(i = 0; i < len; i++)
		{
			if(a[i] != ' ')
				b[l][k++] = a[i];
			else
			{
				b[l][k++] = '\0';
				l++, k = 0;
			}
		}
		if(a[len - 1] == ' ')
			l--;
		qsort(b, l + 1, sizeof(b[0]), cmp);
		cnt = 1;
		for(i = 0; i < l; i++)
		{
			if(strcmp(b[i], b[i + 1]))
				cnt++;
		}
		printf("%d\n", cnt);
	}
	return 0;
}

你可能感兴趣的:(HDU)