博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
1185: 零起点学算法92——单词数
阅读量:5281 次
发布时间:2019-06-14

本文共 3190 字,大约阅读时间需要 10 分钟。

1185: 零起点学算法92——单词数

Time Limit: 1 Sec  Memory Limit: 32 MB   64bit IO Format: %lld
Submitted: 2531  Accepted: 384
[][][]

Description

BobLee 最近忙着考研,话说某一天当他正在看一篇英语阅读时,突然想到想去统计下这篇文章不同单词的个数,由于BobLee很忙,所以想让你帮忙统计一下

 

Input

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

 

Output

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

 

Sample Input 

 
you are very kind#

 

Sample Output

4 参考代码: Re:先设置一个字符型数组来存储字符,然后逐一将每一个单词存到二维数组中。接着排序,然后统计不同即可
#include
#include
#include
#define maxn 10001char paper[maxn][100]= {
'\0'};char str[maxn]= {
'\0'};int cmp(const void *a,const void *b){ return strcmp((char *)a,(char *)b);}int main(){ int i,count,k; int flag; while(gets(str),*str!='#') { flag=1; count=-1; memset(paper,'\0',sizeof(paper)); for( i=0 ; str[i]!='\0' ; i++ ) { if(flag&&str[i]!=' ') { flag=0; count++; k=0; } else if(flag==0&&str[i]==' ') { flag=1; continue; } if(str[i]!=' ') { paper[count][k++]=str[i]; } } memset(str,'\0',sizeof(str)); //for(i=0;i<=count;i++) //puts(paper[i]); if(count>0) qsort(paper,count+1,100*sizeof(char),cmp); /* for(i=0;i<=count;i++) puts(paper[i]); */ int sum=1; for(i=1; i<=count; i++) { if(strcmp(paper[i-1],paper[i])!=0) sum++; } if(count==-1) sum=0; printf("%d\n",sum); } return 0;}

2.map

1 # include 
2 # include
3 # include
4 # include
5 6 using namespace std; 7 8 int main(){ 9 10 map
p;11 string line;12 while(getline(cin,line)&&line[0]!='#'){13 p.clear();14 stringstream ss;//创建一个字符串流 15 ss<
>word){18 p[word] = true;19 }20 cout<
<

3.set

1 # include 
2 # include
3 # include
4 # include
5 6 using namespace std; 7 int main(){ 8 9 set
s;10 string line;11 12 while(getline(cin,line)&&line[0]!='#'){13 stringstream ss;14 ss<
>word){18 s.insert(word);19 }20 21 cout<
<

 

4.strtok

1 #include
2 #include
3 #include
4 #include
5 #include
6 #include
7 #include
8 using namespace std; 9 set
h;10 char p[1000005];11 int main()12 {13 14 while(gets(p)&&p[0]!='#')15 {16 h.clear();17 char *s=strtok(p," ");18 while(s!=NULL)19 {20 string word="";21 word+=s;22 h.insert(word);23 s=strtok(NULL," ");24 }25 cout<
<

 

Re:输入一行由小写字母和空格组成的句子,计算相同单词的个数。 需要注意的几点:
1) 如果一行句子只有空格,则有0个单词。
2) 如果一行句子由空格开头,不能算作单词个数。
3) 如果两个单词之间有n个空格隔开,不能算作单词个数。
4) 如果句子由n个空格结尾,不能算作单词个数。
5) 相同的单词的个数只是一个。

 

 

转载于:https://www.cnblogs.com/AliceNEET/p/8686941.html

你可能感兴趣的文章
数据库查询
查看>>
3-1 Git下载与安装
查看>>
汇编总结一
查看>>
if语句的嵌套使用之获取三个数据的最大值
查看>>
every day a practice —— morning(2)
查看>>
中介者模式
查看>>
UVA 437 The Tower of Babylon
查看>>
团队作业6
查看>>
html5-表单常见操作
查看>>
FreeMarke
查看>>
佳文赏析:《游戏使人上瘾的因素》
查看>>
邮件发送的问题(转载仅为收藏)
查看>>
window.open在ajax里 被浏览器拦截
查看>>
Excel操作快捷键
查看>>
Git之(三)辅助命令
查看>>
JSP自定义方法库
查看>>
android textView中实现html效果
查看>>
《摇滚南京》——"人生下来就是孤独"
查看>>
Oracle中Union与Union All的区别(适用多个数据库)
查看>>
String = ""和String = null的区别
查看>>