poj 2569 Etaoin Shrdlu 统计字符频率

来源:互联网 发布:白城广逸网络地点 编辑:程序博客网 时间:2024/04/30 17:17

题意:

给一个字符串,统计里面各个相邻的两个字符组成的字符串的出现频率。

思路:

水题,只是按行读入时要小心一点。用getchar()清空n后的多余空格,用fflush(stdin)会wa。

代码:

//poj 2569//sepNINE#include <iostream>#include <string>#include <map>#include <algorithm>using namespace std;;struct Node{string c;int n;}word[10000];int cmp(Node a,Node b){if(a.n!=b.n)return a.n>b.n;return a.c<b.c;}int main(){int n;while(cin>>n&&n){string a;map<string,int> m;getchar();while(n--){ string b;getline(cin,b);a+=b; } int i,len=a.length();map<string,int>::iterator iter;for(i=0;i<len-1;++i){string x;x+=a[i];x+=a[i+1];if(m[x]==0)m[x]=1;else++m[x];}int cnt=0;for(iter=m.begin();iter!=m.end();++iter){word[cnt].c=iter->first;word[cnt].n=iter->second;++cnt;}sort(word,word+cnt,cmp);for(int i=0;i<5;++i){cout<<word[i].c<<" "<<word[i].n<<" ";printf("%lf\n",word[i].n*1.0/(len-1));}cout<<endl;}return 0;} 


0 0