这题吃了几个WA 检查了多次计数出了点问题 我的思路就是将一个个单词进二维数组 最后删掉重复的单词
单词数
Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 34801 Accepted Submission(s): 8324
Problem Description
lily的好朋友xiaoou333最近很空,他想了一件没有什么意义的事情,就是统计一篇文章里不同单词的总数。下面你的任务是帮助xiaoou333解决这个问题。
Input
有多组数据,每组一行,每组就是一篇小文章。每篇小文章都是由小写字母和空格组成,没有标点符号,遇到#时表示输入结束。
Output
每组只输出一个整数,其单独成行,该整数代表一篇文章里不同单词的总数。
Sample Input
you are my friend #
Sample Output
4
#include<stdio.h> #include "string.h" char map[100][100]; char ex[100]; int i,j,sum; int main(void) { while(1) { gets(ex); if(ex[0]=='#') break; i=j=sum=0; while(ex[i]==' ') i++; while(ex[i]) { int tmp=0; while(ex[i]!=' '&&ex[i]!=0) {map[j][tmp++]=ex[i]; i++;} while(ex[i]==' ') i++; map[j][tmp]=0; j++; } /* 这是之前WA的计数代码 碰到最后一个单词后面有空格会多统计一次单词数 while(ex[i]) { int tmp=0; while(ex[i]==' ') i++; while(ex[i]!=' '&&ex[i]!=0) {map[j][tmp++]=ex[i]; i++;} map[j][tmp]=0; j++; }*/ for(int m=0;m<j;m++) { for(int n=m+1;n<j;n++) if(strcmp(map[m],map[n])==0&&map[n][0]!=1) { map[n][0]=1; } } for(int i=0;i<j;i++) { if(map[i][0]!=1) sum++; } printf("%d\n",sum); } }