hdu2072 单词数

来源:互联网 发布:江湖家政o2o源码下载 编辑:程序博客网 时间:2024/05/16 11:38

单词数

Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 47095    Accepted Submission(s): 11519


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

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

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

Sample Input
you are my friend#
 

Sample Output
4

1、每篇小文章占一行,也就是说每篇文章的字符总数不大于80。
(猜想:控制台每行为80个字符长度)
2、给出一组测试数据:
    you are my friend (you之前和friend 之后均无空格)
            you are my friend(you之前空格数大于1) 
you are          my friend(are和my之前空格数多于1)
you are my friend             (friend之后有很多空格)
#

4
4
4


#include<iostream>#include<cstring>#include<cstdio>using namespace std;int main(){char str[80];  //存放输入的文章 char res[80][80];  //二维数组存放不同的单词 while(gets(str)){if(str[0]=='#')break;int i=0,j=0,len=0,pos=0,ans=0;   char s[80];len=strlen(str);for(int k=0;;k++)  //忽略文章前面的空格  {if(str[k]==' ')pos++;else break;}while(pos<len)  //pos:表示当前读到str数组的pos个元素 {sscanf(str+pos,"%s",s);  //从文章中获取一个字符串(即一个单词),存入s for(j=0;j<i;j++){if(strcmp(res[j],s)==0)break;  //判断这个单词是否已存在 }if(j==i) //如果前面的for循环结束后,j==i说明这个单词并未出现过 {strcpy(res[i++],s);  //将新单词存入二维数组 ans++;  //不同的单词数+1 }pos+=strlen(s)+1;  //每次获取一个单词后,pos位置发生改变 for(int k=pos;;k++)  //忽略单词之间多空格的情况     {  if(str[k]==' ')pos++;    else break;    }}printf("%d\n",ans);}return 0;} 


0 0
原创粉丝点击