Hoj 1307 Choose Your Words Carefully、Hoj 1989 The Most Frequent Word
来源:互联网 发布:netty 好书 知乎 编辑:程序博客网 时间:2024/05/17 08:22
题目:http://acm.hit.edu.cn/hoj/problem/view?id=1307
本题虽然是水题,但是我还是比较喜欢做的,能锻炼思维,比较类似于编译原理的词法分析。
题意是要统计一段文章出现频率最高的单词。用map<string,int>统计即可。
另外题目要求按照字典序排列,但是好像Map已经有这个功能了,所以就不写了。
练习一下C++ string的用法。
默认map是根据key值从小到大排序的。
#include <iostream>#include <stdio.h>#include <stdlib.h>#include <string.h>#include <math.h>#include <algorithm>#include <stack>#include <queue>#include <map>using namespace std;int main(){#ifndef ONLINE_JUDGE freopen("in.txt","r",stdin);#endif char word[122]; string a; map<string,int> m; int max = 1; while(scanf(" %s",word)!=EOF) { a.clear(); int flag = 0; for(int i=0; i<strlen(word); i++) { if(isalpha(word[i]) || (word[i]>='0' && word[i]<='9')) { flag = 1; if(word[i]>='A' && word[i]<='Z') { word[i] += 32; } a.push_back(word[i]); } else if(flag == 1) { if(m.find(a) == m.end()) { m.insert(make_pair(a,1)); } else { m[a]++; if(m[a]>max) { max = m[a]; } } a.clear(); flag = 0; } } if(flag == 1) { if(m.find(a) == m.end()) { m.insert(make_pair(a,1)); } else { m[a]++; if(m[a]>max) { max = m[a]; } } } } printf("%d occurrences\n",max); for(map<string,int>::iterator i = m.begin();i!=m.end();i++) { if(i->second == max) { printf("%s\n",i->first.c_str()); } } return 0;}
题目:http://acm.hit.edu.cn/hoj/problem/view?id=1989
与上题一样,我直接用上题的代码A掉。
#include <iostream>#include <stdio.h>#include <stdlib.h>#include <string.h>#include <math.h>#include <algorithm>#include <stack>#include <queue>#include <map>using namespace std;int main(){#ifndef ONLINE_JUDGE freopen("in.txt","r",stdin);#endif char word[122]; string a; map<string,int> m; int max = 1; while(scanf(" %s",word)!=EOF && strcmp(word,"#")!=0) { a.clear(); int flag = 0; for(int i=0; i<strlen(word); i++) { if(isalpha(word[i]) || (word[i]>='0' && word[i]<='9')) { flag = 1; if(word[i]>='A' && word[i]<='Z') { word[i] += 32; } a.push_back(word[i]); } else if(flag == 1) { if(m.find(a) == m.end()) { m.insert(make_pair(a,1)); } else { m[a]++; if(m[a]>max) { max = m[a]; } } a.clear(); flag = 0; } } if(flag == 1) { if(m.find(a) == m.end()) { m.insert(make_pair(a,1)); } else { m[a]++; if(m[a]>max) { max = m[a]; } } } } //printf("%d occurrences\n",max); for(map<string,int>::iterator i = m.begin();i!=m.end();i++) { if(i->second == max) { printf("%s\n",i->first.c_str()); break; } } return 0;}
- Hoj 1307 Choose Your Words Carefully、Hoj 1989 The Most Frequent Word
- poj 1583 Choose Your Words Carefully
- POJ 1583 Choose Your Words Carefully 笔记
- Poj 1583 Choose Your Words Carefully + Poj 1119 Start Up the Startup (字符串 map)
- 搜索 HOJ 1692 Choose Your Own Adventure
- (简单)搜索 HOJ 1692 Choose Your Own Adventure
- Choose Your Weapons Carefully, Relinquish Them Reluctantly
- HOJ
- HOJ 2066 Word Reversal
- HOJ The Colored Cubes
- HOJ 3074 The Position
- HOJ 2785 The Game
- Hoj 1140 The Game
- Hoj 1760 The jackpot
- hoj Counting the algorithms
- The Most Frequent Number
- hoj 2430 Counting the algorithms
- HOJ 2100 Beat the Spread!
- HttpClient4 post上传文件, struts2 action接收
- 第一周项目2日期结构体
- 获取WebView加载HTML时网页中的内容
- Transaction replication只对新增的Article产生Snapshot
- 2012国内各大互联网公司研发岗薪资情况
- Hoj 1307 Choose Your Words Carefully、Hoj 1989 The Most Frequent Word
- web入门--jsp/servlet/JSTL
- Android中的跨进程回调
- 关于Linux系统中/tmp目录的清除问题
- 正则表达式30分钟入门教程
- 2746:约瑟夫问题 百炼(非链表)
- 通用存储过程
- command alias
- Python Eric4安装配置