UVA 10008 - What's Cryptanalysis 題目: 密碼翻譯(cryptanalysis)是指把某個人寫的密文(cryptographic writing)加以分解。這個程序通常會對密文訊息做統計分析。你的任務就是寫一個程式來對密文作簡單的分析。 Input 輸入的第1列有一個正整數n,代表以下有多少列需要作分析的密文。 接下來的n列,每列含有0或多個字元(可能包含空白字元) Output 每列包含一個大寫字元(A~Z)和一個正整數。這個正整數代表該字元在輸入中出現的次數。輸入中大小寫(例如:A及a)視為相同的字元。輸出時請按照字元出現的次數由大到小排列,如果有2個以上的字元出現次數相同的話,則按照字元的大小(例如:A在H之前)由小到大排列。 請注意:如果某一字元未出現在輸入中,那他也不應出現在輸出中。 Sample Input #1 3 This is a test. Count me 1 2 3 4 5. Wow!!!! Is this question easy? Sample Output #1 S 7 T 6 I 5 E 4 O 3 A 2 H 2 N 2 U 2 W 2 C 1 M 1 Q 1 Y 1 C++ code: ```c++= #include <bits/stdc++.h> using namespace std; int main () { //ios::sync_with_stdio(0); cin.tie(0); int n, len = 0; int count[100] = {0}; cin >> n; cin.ignore(); while (n--) { string s; getline(cin, s); for (int i = 0; i < s.length(); ++i) { if (s[i] >= 'a' && s[i] <= 'z' || s[i] >= 'A' && s[i] <= 'Z') { len++; count[toupper(s[i])]++; } } } for (int j = len; j >= 1; --j) { for (char i = 'A'; i <= 'Z'; ++i) { if (count[i] == j) { cout << i << " " << count[i] << endl; } } } } ```