HDU 2072 单词数
单词数Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Problem Description lily的好朋友xiaoou333最近很空,他想了一件没有什么意义的事情,就是统计一篇文章里不同单词的总数。下面你的任务是帮助xiaoou333解决这个问题。 Input 有多组数据,每组一行,每组就是一篇小文章。每篇小文章都是由小写字母和空格组成,没有标点符号,遇到#时表示输入结束。 Output 每组只输出一个整数,其单独成行,该整数代表一篇文章里不同单词的总数。 Sample Input
Sample Output 4 Author Lily Source 浙江工业大学网络选拔赛 Recommend linle |
这道题要注意段前空格,段中空格和段后空格
以下代码超时(Time limited exceeded),超时原因在于while(cin>>s)效率太低
#include <iostream>
#include <cstdio>
#include <cstring>
#include <string>
using namespace std;const int maxn=100000;int main()
{std::ios::sync_with_stdio(false);char c;while(c=cin.peek()){if(c=='#') break;int n(0);string word[100];int t(1);int flag=0;string s;while(cin>>s){if(n==0){word[n++]=s;}else{int i;for(i=0;i<n;i++){if(word[i]==s){break;}}if(n==i)word[n++]=s;}c=cin.peek();if(c=='\n')break;while(c==' '){getchar();c=cin.peek();}if(c=='\n')break;}cout<<n<<endl;}return 0;
}
改进后的代码:
#include <iostream>
#include <cstdio>
#include <cstring>
#include <string>
using namespace std;const int maxn=10000;int main()
{char s[maxn];while(cin.getline(s,maxn)) {if(s[0]=='#') break;char word[maxn][50];char * p;p=strtok(s," ");int n(0);while(p) {if(n==0) strcpy(word[n++],p);else {int i;for( i=0; i<n; i++) {if(strcmp(word[i],p)==0) {break;}}if(n==i)strcpy(word[n++],p);}p=strtok(NULL," ");}cout<<n<<endl;}return 0;
}
用C++中的set容器
/* HDU2072 单词数 */#include <iostream>
#include <cstdio>
#include <sstream>
#include <set>using namespace std;int main()
{string s;while(getline(cin, s) && s != "#") {istringstream sin(s);set<string> words;string w;while(sin >> w)words.insert(w);cout << words.size() << endl;}return 0;
}
/* HDU2072 单词数 */#include <cstdio>
#include <cstring>
#include <iostream>
#include <set>
#include <string>using namespace std;int main(void)
{char buf[1024];char pound[] = "#";char delim[] = " ";char *p;set<string> words;while(gets(buf) != NULL) {if(strcmp(buf, pound) == 0)break;words.clear();p = strtok(buf, delim);while(p) {words.insert(p);p = strtok(NULL, delim);}cout << words.size() << endl;}return 0;
}
不运用set
#include<iostream>
#include<string>
using namespace std;int main ()
{char *c=NULL,*d=NULL; //指针初始化!!!char a[81];char b[41][81];int i,j,k,len,count;while(gets(a)){if(a[0]=='#') break;len=strlen(a);for(i=len-1;i>=0;i--) //最后的空格,去掉{if(a[i]==' ')a[i]=NULL;elsebreak;}len=strlen(a);if(len==0){cout<<0<<endl;continue;}for(i=0;i<len;i++) //开始的空格,去掉{if(a[i]==' ')a[i]=NULL;else{d=a+i;break;}}len=strlen(d); //中间的空格,赋NULL,并记录单词d[len]=' ';d[len+1]=NULL;c=d;j=0;for(i=0;i<=len;i++){if(d[i]==' ') {d[i]=NULL;if(d[i+1]!=' '){strcpy(b[j],c);j++;c=d+i+1;}}}count=j; //处理单词,相同的记一次for(i=0;i<j;i++) {for(k=i+1;k<j;k++){if(strcmp(b[i],b[k])==0 && b[k][0]!='#'){count--;b[k][0]='#'; //#是标志,表示该相同单词已被减过,不能再减}}}cout<<count<<endl;}return 0;
}
HDU 2072 单词数相关推荐
- HDU 2072 单词数 Trie 如何debug一颗Trie
单词数 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submis ...
- HDU 2072 单词数
单词数 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submis ...
- hdu 2072单词数
单词数 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submis ...
- HDU - 2072 -- 单词数【set or 字典树】
单词数 Description lily的好朋友xiaoou333最近很空,他想了一件没有什么意义的事情,就是统计一篇文章里不同单词的总数.下面你的任务是帮助xiaoou333解决这个问题. Inpu ...
- hdu 2072 单词数
http://acm.hdu.edu.cn/showproblem.php?pid=2072 单词数这道题感觉用c写很麻烦,用c++写就比较简单了.不多说,直接贴代码. #include<ios ...
- hdu 2072 单词数(C语言)
Problem Description lily的好朋友xiaoou333最近很空,他想了一件没有什么意义的事情,就是统计一篇文章里不同单词的总数.下面你的任务是帮助xiaoou333解决这个问题. ...
- 杭电oj HDOJ 2072 单词数
杭电oj HDOJ 2072 单词数 Problem Description lily的好朋友xiaoou333最近很空,他想了一件没有什么意义的事情,就是统计一篇文章里不同单词的总数.下面你的任务是 ...
- 杭电oj2072c语言,杭电acm 2072(单词数)
#include//此种解法dsds# dsds是可以输入的,但是HDOJ也通过了.下面的解法解决了此问题. #include #include using namespace std; int ...
- HDOJ 2072 单词数
Problem Description lily的好朋友xiaoou333最近很空,他想了一件没有什么意义的事情,就是统计一篇文章里不同单词的总数.下面你的任务是帮助xiaoou333解决这个问题. ...
最新文章
- 链表倒数第k个节点_面试题 02.02. 返回倒数第 k 个节点
- poj1274(最大匹配)
- unity中app实现拖拽_10分钟让你实现在APP中对网络状态变化进行全局提示
- python打印浮点数_python – 打印整数或带有n位小数的浮点数
- 怎么提高面试成功率?
- MSChart使用导航之开发
- 参考地、保护地、大地的概念
- 数据结构与算法笔记(三)—— 链表(单链表、循环链表、双向链表)
- Marketing Cloud里CSRF token的获取时机
- 戴尔XPS-13超级本赏析
- Nginx 高级配置
- VIm中Python自动补全插件Pydiction
- 一份简短又全面的数学建模技能图谱:常用模型算法总结
- Linux查看可执行文件依赖库
- matlab imagesc 保存,在matlab中保存imagesc的精确图像输出
- A股哪家上市公司年报更亮眼?
- 软件开发各种版本规范
- 逻辑英语公式R1+R2
- 服务器中搭建OA系统,oa系统搭建在云服务器上
- ESP32 NVS同windows文件系统的类比,附上一段NVS操作的代码解析
热门文章
- vue ---- 将项目打包发布
- 数学6年级测试软件,苏教版数学六年级下册2018年小学六年级毕业测试试卷(无答案).doc...
- php 瓶颈,使用XHProf查找PHP性能瓶颈
- kibana设置中文
- RabbitMQ发布/订阅模式(Publish/Subscribe)
- mysql中 routine
- 如何把include_type_name的值设置为true
- 蠕虫mysql_mysql蠕虫复制基础知识点
- mysql查询删除重复数据
- condition实现通知部分线程