1 一定要让思路和代码,保持简介清晰条理
2 如果这个思路写不下去,就换思路重写不要卡在一个思路上太久,可以换个数据结构或者代码组织形式
3 如何才能将各种细节尽可能都想到呢。
#include<stdio.h>
//#include<bits/stdc++.h>
#include<string.h>
#include<iostream>
#include<map>
using namespace std;
string s;
map<string,int>mmat;
map<string,int>::iterator it;
void Print(){
int minn=0;
for(it=mmat.begin();it!=mmat.end();it++){
//cout<<"Note1: "<<it->first<<" "<<it->second<<endl;
if(it->second >minn){
s=it->first;
minn=it->second;
//cout<<"Note2: "<<minn<<endl;
}
else if(it->second==minn && it->first<s){
s=it->first;
}
}
if(minn)
cout<<s<<":"<<minn<<endl;
}
int main()
{
int cnt=0;
int bj=0;
int len=0;
int star=0;
int last_bj=0;
string s_last,s_cur,s_com;
while(getline(cin,s)){
// cout<<s<<endl;
if(s=="####"){
Print();
mmat.clear();
continue;
}
cnt=0;
last_bj=0;
len=s.length();
//cout <<"len: "<<len<<endl;
for(int i=0;i<len;i++){
if(s[i]==' '){
if(cnt==1){//s_cur:1~2
s_cur=s.substr(star,i-star);
//cout<<"Note0: "<<s_cur<<" i:"<<i<<endl;
cnt=2;
if(last_bj==1){
s_com=s_last+" "+s_cur;
mmat[s_com]++;
//cout<<"Note: i: "<<i<<" "<<s_com<<" "<<mmat[s_com]<<endl;
}
s_last=s_cur;
last_bj=1;
}
}
else if(s[i]==','||s[i]=='.'){
if(cnt==1){
s_cur=s.substr(star,i-star);
//if(s_cur==","||s_cur=="."){
//continue;
//}
cnt=2;
if(last_bj==1){
s_com=s_last+" "+s_cur;
mmat[s_com]++;
//cout<<"Note: "<<s_com<<" "<<mmat[s_com]<<endl;
}
last_bj=0;
}
cnt=2;
last_bj=0;
}
else{
if(cnt==0||cnt==2){
star=i;
cnt=1;
}
}
}
if(s[len-1]!=' '){
s_cur=s.substr(star,len-star);
cnt=2;
if(last_bj==1){
s_com=s_last+" "+s_cur;
mmat[s_com]++;
//cout<<"Note: "<<s_com<<" "<<mmat[s_com]<<endl;
}
s_last=s_cur;
last_bj=1;
}
}
return 0;
}
// abc,.,.,. ,.,., ,.,.,abc abc ,,.,., abc abc abc,.,.,afe afe afe afe,.,