单词数
Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 50409 Accepted Submission(s): 12332
Problem Description
lily的好朋友xiaoou333最近很空,他想了一件没有什么意义的事情,就是统计一篇文章里不同单词的总数。下面你的任务是帮助xiaoou333解决这个问题。
Input
有多组数据,每组一行,每组就是一篇小文章。每篇小文章都是由小写字母和空格组成,没有标点符号,遇到#时表示输入结束。
Output
每组只输出一个整数,其单独成行,该整数代表一篇文章里不同单词的总数。
Sample Input
you are my friend #
Sample Output
4
Author
Lily
Source
Recommend
View Code
Problem : 2072 ( 单词数 ) Judge Status : Accepted
RunId : 20163317 Language : C++ Author : 837274600
Code Render Status : Rendered By HDOJ C++ Code Render Version 0.01 Beta
RunId : 20163317 Language : C++ Author : 837274600
Code Render Status : Rendered By HDOJ C++ Code Render Version 0.01 Beta
#include<stdio.h> #include<string.h> #include<math.h> #include<stdlib.h> void Copy(char w[], char s[], int a, int b) { int i; if (b >= a) { for (i = 0; i <= b - a; i++) w[i] = s[a + i]; w[i] = '\0'; } } int main() { char s[500]; while (gets_s(s) && s[0] != '#') { int len = strlen(s), i, j, n = 0, sum = 0, a, b; char temp[20], w[100][20]; a = b = -1; for (i = 0; i < len; i++) { if (s[i] == ' '&&a < 0) continue; if (s[i] != ' '&&a < 0) a = i; if (s[i] == ' '&&a >= 0) { b = i - 1; Copy(temp, s, a, b); for (j = 0; j < n; j++) { if (!strcmp(temp, w[j])) break; } if (j == n) { Copy(w[n++], s, a, b); sum++; } a = b = -1; } if (s[i + 1] == '\0'&&a >= 0) { b = i; Copy(temp, s, a, b); for (j = 0; j < n; j++) { if (!strcmp(temp, w[j])) break; } if (j == n) { Copy(w[n++], s, a, b); sum++; } a = b = -1; } } printf("%d\n", sum); } return 0; }