Loading [MathJax]/extensions/TeX/AMSsymbols.js

2015年10月21日 星期三

Uva 10008 What's Cryptanalysis?

#uva 10008 #What's Cryptanalysis?

題目來源:https://uva.onlinejudge.org/index.php?option=onlinejudge&Itemid=99999999&category=12&page=show_problem&problem=949


題意:計算字母出現的次數

程式碼:


#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
struct P{
int times;//次數
char ch;//代表字母
};
int comp(const P x,const P y){
if(x.times==y.times)//若次數相等,依字母排序
return x.ch<y.ch;
return x.times>y.times;//出現次數多的排前面
}
int main(){
char ch,str[10000];
int N;
P a[27];
for(int i=0;i<26;i++){
a[i].times = 0;
a[i].ch = i+65;
}//先做初始化
scanf("%d\n",&N);
while(N--){
cin.getline(str,10000);
for(int i=0;i<strlen(str);i++)
if(isalpha(str[i])){//判斷是不是英文字母
if(islower(str[i])) str[i]-=32;//如果是小寫則轉成大寫
a[(int)str[i]-65].times++;//次數+1
}
}
sort(a,a+26,comp);//排序
for(int i=0;i<26,a[i].times>0;i++)//按照次數輸出,但沒出現過的不用輸出
cout<<a[i].ch<<" "<<a[i].times<<endl;
}
view raw uva 10008.cpp hosted with ❤ by GitHub

沒有留言:

張貼留言

注意:只有此網誌的成員可以留言。