Try   HackMD

題目

  • 密碼翻譯(cryptanalysis)是指把某個人寫的密文(cryptographic writing)加以分解。這個程序通常會對密文訊息做統計分析。你的任務就是寫一個程式來對密文作簡單的分析。

思路

  1. 先讀取int 到n,然後直接 while loop 做字串讀取。
    3.1 將 map 的內容轉換到 vector 這可以簡化流程;調用 std::sort() 針對 vector 進行排序 。
    3.2 排序規則依照題目所求即可。
    3.3 直接把 vector 輸出就好了。

注意事項

很多地方使用了標準庫的函式,如果不喜歡就自己改掉吧!

Code

#include <bits/stdc++.h> using sp=std::pair<char,int>; int main() { int n; std::cin>>n; std::cin.ignore(); std::string s; std::map<char, int> mp; while(getline(std::cin,s)){ std::stringstream sin(s); char c; while(sin>>c) if(std::isalpha(c)) mp[std::toupper(c)]++; } std::vector<sp> vec(mp.begin(),mp.end()); std::sort(vec.begin(),vec.end(), [](const sp&a, const sp&b){ if(a.second!=b.second) return a.second>b.second; return b.first>a.first; }); for(auto i:vec) std::cout<<i.first<<" " <<i.second<<"\n"; }