照題目計算各個英文字母出現的次數即可。
C++(0.008)
/*******************************************************/ /* UVa 10008 What's Cryptanalysis? */ /* Author: LanyiKnight [at] knightzone.studio */ /* Version: 2012/03/16 */ /*******************************************************/ #include<iostream> #include<cstdio> #include<cctype> #include<utility> #include<algorithm> using namespace std; typedef pair<char,int> Pair; bool compare( Pair a, Pair b ){ if( a.second > b.second ) return true; if( a.second < b.second ) return false; if( a.first < b.first ) return true; return false; } int main(){ int n; string s; Pair ASCII[130]; while( scanf( "%d", &n ) != EOF ){ for( int i = 0 ; i < 130 ; i++ ){ ASCII[i].first = i; ASCII[i].second = 0; } getchar(); for( int i = 0 ; i < n ; i++ ){ getline( cin, s ); for( int j = 0 ; j < s.length() ; j++ ) if( isalpha(s[j]) ) ASCII[toupper(s[j])].second++; } sort( ASCII, ASCII+130, compare ); for( int i = 0 ; i < 130 ; i++ ){ if( ASCII[i].second ) printf( "%c %d\n", ASCII[i].first, ASCII[i].second ); } } return 0; }
回應