/*20150310 hanting*/
#include <iostream>
#include <algorithm>
using namespace std;
bool compare(pair<char,int> a,pair<char,int> b)
{
if(a.second==b.second) return a.first<b.first;
else return a.second>b.second;
}
int main()
{
int N;
cin>>N;
cin.get();
string str[N];
string total="";
for(int i=0;i<N;i++)
{
getline(cin,str[i]);
for(int j=0;j<str[i].size();j++)
{
if(isalpha(str[i][j])) total+=toupper(str[i][j]);
}
}
pair<char,int> letter[26];//< 字母 , 字母出現的次數 >
for(int i=0;i<26;i++) letter[i].first=i+'A';
for(int i=0;i<total.size();i++)
{
letter[total[i]-'A'].second++;
}
sort(letter,letter+26,compare);
for(int i=0;letter[i].second;i++)//次數是0就停止輸出
{
cout<<letter[i].first<<" "<<letter[i].second<<endl;
}
return 0;
}
----------------------------------------
/* 20151012
* hanting
* UVa 10008 - What's Cryptanalysis?
* C++
*/
#include <iostream>
#include <algorithm> //transform,sort
using namespace std;
struct Letter
{
char ch;
int cnt;
Letter():cnt(0){}
bool operator<(const Letter& another)const
{
return cnt>another.cnt or (cnt==another.cnt and ch<another.ch);
}
};
int main()
{
int N;
while(cin>>N)
{
string str;
cin.get();
Letter letter[26];//A~Z
for(int i=0;i<26;i++)
{
letter[i].ch='A'+i;
}
for(int i=0;i<N;i++)
{
getline(cin,str);
transform(str.begin(),str.end(),str.begin(),::toupper);
for(int i=0;i<str.size();++i)
{
if(isalpha(str[i])) letter[ str[i]-'A' ].cnt++;
}
}
sort(letter,letter+26);
for(int i=0;i<26;i++)
{
if(letter[i].cnt)
{
cout<<letter[i].ch<<" "<<letter[i].cnt<<endl;
}
}
}
return 0;
}
2015年3月10日 星期二
[UVA] 10008 - What's Cryptanalysis?
訂閱:
張貼留言 (Atom)
沒有留言:
張貼留言