ZOJ 3700 Ever Dream(字符串)
2013-04-20 17:38
274 查看
普通的字符串处理
用map比较方便
用map比较方便
#include <iostream> #include <memory.h> #include <map> #include <string> #include <cstring> #include <cstdio> #include <algorithm> #include <vector> using namespace std; const int maxn=105; char buf[maxn]; map<string,int>cnt; map<int,vector<string> >mvs; int main(){ int t,n; scanf("%d",&t); while(t--){ cnt.clear(); mvs.clear(); scanf("%d",&n); getchar(); while(n--){ gets(buf); int len=strlen(buf); for (int i=0;i<len;++i){ if(!isalpha(buf[i]))buf[i]=' '; } char *str=strtok(buf," "); while(str){ string s=str; for(int i=0;i<s.size();++i){ s[i]=tolower(s[i]); } cnt[s]++; str=strtok(NULL," "); } } map<string,int>::iterator it=cnt.begin(); for(;it!=cnt.end();++it){ if(it->second>=2){ mvs[it->second].push_back(it->first); } } map<int,vector<string> >::reverse_iterator it2=mvs.rbegin(); int c=0; for(;it2!=mvs.rend();++it2){ vector<string>v; int maxv=0; for(int i=0;i<it2->second.size();++i){ maxv=max(maxv,(int)(it2->second[i].size())); } for(int i=0;i<it2->second.size();++i){ if(it2->second[i].size()==maxv){ v.push_back(it2->second[i]); } } if(c>0)printf(" "); if(v.size()>1){ sort(v.begin(),v.end()); printf("%s",v[v.size()-2].c_str()); }else{ printf("%s",v[0].c_str()); } ++c; } printf("\n"); } }
相关文章推荐
- ZOJ 3700 Ever Dream 文章中单词的处理
- ZOJ 3700 Ever Dream(模拟)
- ZOJ-3700 Ever Dream 模拟
- ZOJ 3700 Ever Dream 文章中单词的处理
- ZOJ 3700 Ever Dream
- ZOJ 3700 Ever Dream
- ZOJ 3700 Ever Dream
- ZOJ 3490 String Successor 字符串处理
- ZOJ 2001题解字符串处理
- ZOJ-#3465 The Hive(字符串模拟)
- zoj 3700 模拟+STL vector
- ZOJ 1952( Dijkstra )要求卡车的最大载货量,即是求dist[]的最小值这里关键是把字符串转化为数字存储在邻接矩阵cost[][]中.开始看了党姐的代码不懂,又看了一遍,大悟!
- ZOJ 1151 - Word Reversal(字符串反转)
- ZOJ Problem Set - 3490 String Successor(字符串模拟)
- zoj zju 2989 Encoding 字符串处理
- ZOJ1181 Word Amalgamation 字符串 排序查找
- [字符串]FJSDFZOJ 1075 统计单词数
- ZOJ-#3501 Roman Order(字符串模拟)
- zoj 2104 出现次数最多的字符串 两种姿势
- zoj zju 2990 Decoding 字符串处理